前不久导师要求交叉编译一个基于arm平台开发的内核模块来练手,在网上查了很多资料才弄出来,于是将这些零散的信息综合起来给和我一样的入门人员了解。水平有限,请谅解~
1.安装arm-none-linux-gnueabi交叉编译器
很多时候我们需要编译运行在其他平台的文件,而没有条件在目标平台上直接编译时,我们就用到了交叉编译。顾名思义就是在现有平台编译目标平台的程序。
在linux编译arm平台的内核模块时,大多采用arm-none-linux-gnueabi交叉编译器。这个编译器虽然在官网可以下载但是很难找,在此贴出一个百度云盘的共享地址:http://pan.baidu.com/share/link?shareid=2940135020&uk=1443951890
在ubuntu下,输入命令:
$tar-xvjfarmarm-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar
将该文件解压。然后输入命令:gedit ~/.bashrc在文件的末尾添加 exportPATH=$PATH:/usr/local/arm/4.4.3/bin
这样就配置好了环境变量。我们可以输入arm-none-linux然后按Tab键看是否填充来判断环境变量是否配置完好。
请注意一点,由于arm-none-linux-gnueabi需要运行在32位的linux上,如果按照上述配置完了环境变量后依然无法填充,请检查linux的版本是32位还是64位(可以输入:getconf LONG_BIT查看)如果是64位操作系统那么要么重新安装32位要么输入命令:sudo apt-getinstall ia32-libs来安装32位的兼容库。
2.构造linux内