我正在尝试为 ARM linux 编译 AODV。我使用 SabreLite 作为内核版本 3.0.35_4.1.0 的板。值得一提的是,我正在使用 openembedded 为我的主板创建我的 Linux 发行版。AODV 源代码 ( http://sourceforge.net/projects/aodvuu/ ) 有一个 README 文件,其中提供了一些关于如何在 ARM 上安装它的指示,如此处所述。(http://w3.antd.nist.gov/wctg/aodv_kernel/kaodv_arm.html)。
我能够升级 makefile 以便与 2.6 后的内核版本一起使用(如上所述,我有 3.0.35_4.1.0 内核版本)。所以,基本上,我要做的是我必须创建一个模块(比如说 file.ko),然后将它加载到 ARM 中(使用 insmod file.ko 命令)。
为此,我使用了一个交叉编译器,其中一些值如下所述:
echo $CC : arm-oe-linux-gnueabi-gcc -march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9 --sysroot=/usr/local/oecore- x86_64/sysroots/cortexa9hf-vfp-neon-oe-linux-gnueabi
回声 $ARCH=手臂
echo $CFLAGS: O2 -pipe -g -feliminate-unused-debug-types
echo $LD : arm-oe-linux-gnueabi-ld --sysroot=/usr/local/oecore-x86_64/sysroots/cortexa9hf-vfp-neon-oe-linux-gnueabi
echo $LDFLAGS : -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,--as-needed
当我启动“make command”时,出现以下错误:
LD [M] /home/scof/script_emulation/AODV/aodv-uu/lnx/kaodv.o
arm-oe-linux-gnueabi-ld:无法识别的选项“-Wl,-O1”
arm-oe-linux-gnueabi-ld:使用 --help 选项获取使用信息
它表明链接器有问题。这个链接器来自交叉编译工具,我通常不应该碰它。
无论如何,为了修复上述错误,我尝试像这样撤回 LDFLAGS: export LDFLAGS='',然后,make 命令起作用,我得到模块 kaodv.ko。但是当我将它插入我的 ARM 进行检查时,它不起作用。它实际上冻结了我的终端
所以我的问题是,我必须在编译时指定 LDFLAGS 吗?撤销 LDFLAGS 是否会对生成的内核模块产生影响。实际上,我试图了解问题可能出在哪里,而我唯一想到的可能是我不应该手动更改 LDFLAGS。但是,如果我不更改 de LDFLAGS,我会收到无法识别的选项错误。
我与此相关的第二个问题是,LDFLAGS 在 ARM 编译中的可能价值是什么
谢谢 !!