现在我正在学习内核模块,所以我在虚拟机中使用kernel 4.4.0-28-generic设置了一个Ubuntu16.04。
我安装了这个软件包
# dpkg -l | grep linux
ii console-setup-linux 1.108ubuntu15 all Linux specific part of console-setup
ii libselinux1:amd64 2.4-3build2
我有些怀疑:
用例:
A static library containing a global variable, static variable, a function
and a class defined
A shared library uses these and hence they are part of the same.
A executable program also uses the same and they are part of the same.
The executable loads the shared library
此代码在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选项或一个选项,签
我从源代码编译并安装了Python3.6.1,并运行sudo pip3 install readline来安装readline模块。但是,当我启动Python时,无论输入什么内容,它都会崩溃:
Python 3.6.1 (default, Mar 25 2017, 13:40:56)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print("
无论我在哪里搜索,我都可以找到创建Linux内核模块的答案。示例
/*
* hello−1.c − The simplest kernel module.
*/
#include <linux/module.h> /* Needed by all modules */
#include <linux/kernel.h> /* Needed for KERN_INFO */
int init_module(void)
{
printk(KERN_INFO "Hello world 1.\n");
/*
* A non 0 return means ini