与标准 linux 内核相比,RT linux 内核上是否有任何问题的编程 RealTime C++ 应用程序(用户空间和 linux 驱动程序)?
Linux RT 补丁将更改应用于内核调度程序、信号量、静音等,我想知道这些更改是否对开发人员透明?或者在写这样的申请时需要特别小心吗?
我需要读取网络适配器的永久(烧入)MAC 地址。由于MAC地址很容易被欺骗,我需要读取写在EEPROM上的真实地址。我需要在 Linux 上使用 C++ 来完成它。
我尝试使用ethtool,它非常好并且工作正常。但是,在某些系统上,它无法按预期工作。
ethtool -P eth0
Run Code Online (Sandbox Code Playgroud)
返回这个:
Permanent address: 00:00:00:00:00:00
Run Code Online (Sandbox Code Playgroud)
和
ethtool -e eth0
Run Code Online (Sandbox Code Playgroud)
返回这个:
Cannot get EEPROM data: Operation not supported
Run Code Online (Sandbox Code Playgroud)
网络适配器具有以下信息:
Linux内核版本为:2.6.32.13
问题是:我可以通过任何更新(驱动程序、内核等)来解决这个问题吗?
此外,我使用ioctlC++ 中的函数进行了相同的 ethtool 调用。有没有办法在代码中解决这个问题?或者有没有其他方法可以从 EEPROM 中获取永久 MAC 地址?
当我没有 sudo 访问权限时,我应该如何编译依赖于未在系统上预安装开发包(头文件等)的库的程序?
在这种特殊情况下,我有 Ubuntu 12.04,但我希望有一个更通用的解决方案,因为对我来说,我需要管理员权限才能安装开发包以便我可以编译,这似乎很奇怪。
g++ -Wall -I/usr/local/include/thrift *.cpp -lthrift -o something
Run Code Online (Sandbox Code Playgroud)
这是来自 Apache Thrift 网站。
-I/usr 也应该是 -I /usr 吗?
我正在编写代码来模拟将在计算集群(单节点)上运行的膜。我想优化那台机器的代码。我使用了 -optimize、-O3 和 -march=core2。
我怎么知道我是否可以改善行军因素,还有什么我可以做的事情来改善这一点?
谢谢
我在 Ubuntu 13.10(32 位)中使用 Qt Creator 编写并编译了一个 C++ 程序。我尝试在新安装的 Ubuntu 13.10(64 位)中运行编译后的程序。但它没有运行。
我认为问题在于依赖关系。如何找到(=知道名称和版本)必要的依赖项?
折腾了半天,还是想不通,为什么用execlcall启动的dash就变成僵尸了。
下面是一个最小的测试用例——我只是 fork 一个孩子,复制 std [in,out,err]描述符,然后启动sh。
#include <cstdio>
#include <fcntl.h>
#include <cstring>
#include <stdlib.h>
#include <cerrno>
#include <unistd.h>
int main() {
    int pipefd[2];
    enum {
        STDOUT_TERM = 0,
        STDIN_TERM  = 1
    };
    if (pipe(pipefd) == -1) { //make a pipe
        perror("pipe");
        return 0;
    }
    pid_t pid = fork();
    if (pid == 0)
    {// Child
        dup2(pipefd[STDIN_TERM], STDIN_FILENO);
        dup2(pipefd[STDOUT_TERM], STDOUT_FILENO);
        dup2(pipefd[STDOUT_TERM], STDERR_FILENO);
        execl("/bin/sh","sh", (char*)NULL);
        // Nothing below this line should be executed by child process. If so, …Run Code Online (Sandbox Code Playgroud) 我需要使用我的 C++ 程序列出现有的 USB 集线器和连接在集线器中的设备。
我可以使用命令从终端打印 USB 集线器和连接在集线器中的设备
lsusb
lsusb -v 
Run Code Online (Sandbox Code Playgroud)
我想在我的 C++ 程序中使用该功能。
我如何以编程方式执行此操作。是否有任何 C++ 类可用于我的 Qt 应用程序。
我有 .c、.h 和 .1 文件,如何将它们编译成一个可执行文件。.c 和 .h 文件一切都清楚,但我也有 .1,正如我从它用于手册的内容中看到的那样,如何将它们与程序链接?
我正在使用make. 该模型具有Makefile通过类似于-L/lib1 -L/lib2. 但是当我尝试运行该模型时,它会失败,除非我还确保环境变量
export LD_LIBRARY_PATH=/lib1:/lib2
Run Code Online (Sandbox Code Playgroud)
并指向完全相同的库。这对我来说似乎是多余的。
这里的幕后会发生什么?为什么我必须在编译之前和执行之前有效地指定库的位置?
这可能是一个愚蠢的问题;我对编译为机器代码不是很有经验,通常只使用脚本语言。
c++ ×10
c ×3
compiling ×3
linux ×3
libraries ×2
api ×1
command-line ×1
ethernet ×1
exec ×1
fortran ×1
linker ×1
linux-kernel ×1
mac-address ×1
networking ×1
qtcreator ×1
real-time ×1
shell ×1
sudo ×1
usb ×1