我正在用内核版本3.14.17编写一个简单的LSM代码。
代码片段:
#include <linux/module.h> // included for all kernel modules
#include <linux/kernel.h> // included for KERN_INFO
#include <linux/init.h> // included for __init and __exit macros
#include <linux/security.h>
#include <linux/trace
此代码在linux下编译,但在mac下编译( lib.c的内容如下所示):
int add(int a, int b);
int sum(int a, int b) {return add(a, b);}
在linux中,我使用这个命令,它可以工作:
gcc -shared -fPIC lib.c -o lib.so
相同的命令在mac中失败,从而产生以下错误:
架构x86_64的未定义符号:
"_add",引用自:
ccK5mZfC.o中的_sum
ld:在体系结构x86_64中找不到符号
collect2: ld返回1个退出状态
请您给我一个gcc选项或一个选项,签
pthread_cond_destroy在孤立的进程共享条件变量上的行为是指定的、未指定的、实现定义的还是未定义的?另外,我在Linux上看到的行为(在下面详细说明)是一个bug吗?
这里所说的“孤儿”cv指的是在服务生去世时正在pthread_cond_wait电话中的人。
通过调整来自的场景,我发现如果在Linux上这样做:
Time Process A Process B Comments
---- --------- --------- --------
1 mmap
我遇到了一个奇怪的“未定义引用”编译错误,我似乎找不到解决方法。我尝试使用Yocto Project生成的ARM编译器(arm-poky-linux-gnueabi-gcc)为我的Gumstix Overo配置/编译PAM 1.1.6,但在编译过程中不断收到以下错误:
.libs/pam_rhosts.o: In function `pam_sm_authenticate':
modules/pam_rhosts/pam_rhosts.c:117: undefined reference to `ruserok'
collect2: error: ld returned 1 e