我构建了运行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 ++中编写了一个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) 我为网络服务器编写了一个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) 我正在建立一个自助服务终端系统,可以在启动时自动加载全屏网页.标准的东西.
问题是连接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)
触摸屏根本不起作用,所以我认为这是适当的改变部分.
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