小编use*_*576的帖子

使用较新的编译器编译linux 2.6内核模块

我构建了运行RT_PREMPT版Linux的嵌入式机器.这是运行Linux 2.6内核的Ubuntu 10.04安装.是的,这是一个旧内核,但我已经坚持了一段时间.

当我编译内核时,我使用了gcc 4.4版.在这个系统上,有一个我已经成功编译了三年的内核模块.

从我的Makefile ...

all:

make -C /lib/modules/$(shell uname -r)/build M=$(PWD) \
    modules
Run Code Online (Sandbox Code Playgroud)

我当前的项目需要支持c ++ 14,所以我通过从源代码构建将gcc和g ++更新到版本5.1.0.我的所有用户模式软件都编译,但是当我去构建我的内核模块的更新版本时,我立即收到以下错误:

make[1]: Entering directory `/usr/src/linux-headers-2.6.32-54-generic'
  CC [M]  /home/tbj/srcroot/ctsengine-hg/CtsRt/ctsrt_main.o
In file included from include/linux/compiler.h:40:0,
             from include/linux/stddef.h:4,
             from include/linux/list.h:4,
             from include/linux/module.h:9,
             from /home/tbj/srcroot/ctsengine-hg/CtsRt/ctsrt_main.c:31:
include/linux/compiler-gcc.h:86:30: fatal error: linux/compiler-gcc5.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)

简而言之:

fatal error: linux/compiler-gcc5.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)

如果我再次使用gcc 4.4(我把它安装在我的计算机上的不同目录中),它会编译并运行完美.

显然,我错过了一些东西.是否无法使用比编译操作系统更新版本的编译器编译内核模块?这对我来说似乎不太可能.是否缺少配置步骤?我需要更新系统变量吗?我应该下载额外的标题吗?我运行apt来更新build-essential,但它是最新的.我的系统上有内核的源代码和头文件.我不确定我还能下载什么.

非常感谢对此问题的任何见解.先感谢您.

c gcc linux-kernel

17
推荐指数
1
解决办法
2万
查看次数

在Node.js C++ Addon中发出一个事件

我有一个应用程序从工业控制器读取一系列过程数据.我希望在数据发生变化时将数据推送到网页.为此,我在c ++中编写了一个node.js插件,用于扫描流程数据并尝试在数据值更改时触发事件.使用Addon一切正常,直到它尝试触发事件,此时node.js以错误终止:

undefined:0


TypeError: undefined is not a function
Run Code Online (Sandbox Code Playgroud)

CPP,javascript shim和测试javascript如下.任何见解都非常感谢.

提前致谢.

node_corelink.cpp

typedef struct CoreLinkValue
{
    // pointer to a CTS variant value
    CtsVariant* value;

    // copy of the last value that was broadcast
    CtsVariant lastValue;

} CoreLinkValue;


//
// An event structure for pushing events to node.js
// Requires the javascript shim code in node_corelink.js
//
struct Emitter: ObjectWrap 
{
    static Handle<Value> New(const Arguments& args);
    static Handle<Value> DataChange(const char* topic, CtsVariant* value);
};

//
// Create a message …
Run Code Online (Sandbox Code Playgroud)

javascript c++ node.js

7
推荐指数
1
解决办法
2655
查看次数

Node.Js + express + Passport:无法注销用户

我为网络服务器编写了一个JS脚本,其中包括使用护照和摘要策略进行身份验证.我没有使用会话,但我尝试使用会话,但它不会改变结果.浏览器请求"/ login"路由并显示内置登录对话框.身份验证工作正常,但我无法让用户"注销".问题似乎是浏览器记住登录凭据并自动重新发送.最终结果是用户必须完全关闭浏览器才能注销,但这对此应用程序来说是个问题.我知道必须有一种方法告诉浏览器不要这样做,但我还没弄明白.

我想出了一个让浏览器再次显示登录对话框的黑客攻击; 强制认证功能返回false.但是,我还没有找到一种方法来执行每个会话.现在,如果一个人退出,每个人都会退出.这不是一个可行的解决方案.

谁能告诉我这里我做错了什么?我想知道的一件事是,当它发布到/ logout路由时,我是否正在向浏览器返回正确的响应(参见结束).我返回res.json(""),但是我应该发送一个不同的响应来告诉浏览器忘记会话的凭据?

我的代码如下.非常感谢任何见解.先感谢您.

Ť

var passport = require('passport'), 
    DigestStrategy = require('passport-http').DigestStrategy;

var express = require('express');
var app = express();
app.configure(function () {
    app.use(
        "/", //the URL throught which you want to access to you static content
        express.static('./www') //where your static content is located in your filesystem
    );
  app.use(express.cookieParser());
  app.use(express.bodyParser());
  app.use(express.session({ secret: 'keep moving forward' }));
  app.use(passport.initialize());
  app.use(passport.session());
  app.use(app.router);


});
app.listen(80); //the port you want to use


/**
 * CORS support.
 */

app.all('*', function(req, res, next){
  if …
Run Code Online (Sandbox Code Playgroud)

node.js express passport.js

7
推荐指数
3
解决办法
2万
查看次数

X11 EvDev触摸屏驱动程序:禁用长按在桌面上单击鼠标右键

我正在建立一个自助服务终端系统,可以在启动时自动加载全屏网页.标准的东西.

问题是连接Acer触摸屏,它与evdev驱动程序工作正常......但它的工作原理有点太好了.如果用户按下并按住屏幕,则会生成右键单击并显示上下文菜单.这会导致界面出现一些问题,我需要禁用此功能,但我还没有找到办法.

X11配置文件不是我有很多经验的东西.有没有人有摆脱这个功能的经验?是否可以将触摸屏映射到通用鼠标驱动程序?

该系统是: - Ubuntu Mate 15.04 - Raspberry Pi 2 - 窗口管理器:Matchbox - 浏览器:Chromium

到目前为止,我对/usr/share/X11/xorg.conf.d中的10-evdev.conf文件进行了以下更改.

Section "InputClass"
 Identifier "evdev touchscreen catchall"
 MatchIsTouchscreen "on"
 MatchDevicePath "/dev/input/event*"
 Driver "evdev"
 **Option "ButtonMapping" "1 0 0 0 0"
 Option "Emulate3Buttons" "False"
 Option "EmulateWheel" "False"
 Option "EmulateThirdButton" "False"
 Option "EmulateThirdButtonTimeout" "100000"
 Option "EmulateThirdButtonMoveThreshold" "0"**
EndSection
Run Code Online (Sandbox Code Playgroud)

它们都没有对正在生成的右键单击事件或上下文菜单出现任何影响.但是,如果我把:

Option "Ignore" "on"
Run Code Online (Sandbox Code Playgroud)

触摸屏根本不起作用,所以我认为这是适当的改变部分.

linux ubuntu evdev

5
推荐指数
1
解决办法
2206
查看次数

标签 统计

node.js ×2

c ×1

c++ ×1

evdev ×1

express ×1

gcc ×1

javascript ×1

linux ×1

linux-kernel ×1

passport.js ×1

ubuntu ×1