本文介绍了LDFLAGS的含义是什么的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

限时删除!!

我正在尝试为ARM Linux编译AODV。我使用SabreLite作为内核版本为3.0.35_4.1.0的电路板。值得一提的是,我正在使用OpenEmbedded为我的主板创建我的Linux发行版。AODV源代码(http://sourceforge.net/projects/aodvuu/)有一个自述文件,其中提供了一些关于如何在ARM上安装它的说明,如这里所述。(http://w3.antd.nist.gov/wctg/aodv_kernel/kaodv_arm.html)。

我能够升级Makefile,以便与2.6内核后版本一起使用(如上所述,我有3.0.35_4.1.0内核版本)。因此,基本上,我要做的是创建一个模块(假设为file.ko),然后将其加载到ARM中(使用inmod file.ko命令)。

为此,我使用了一个交叉编译器,它的一些值如下所示:

  • 回显$CC:ARM-OE-LINUX-GNOUEABI-GCC-MARCH=ARMv7-a-mhumb-interwork-mFloat-abi=Hard-mfpu=neon-mtune=CORICAL-A9--sysroot=/usr/local/oecore-x86_64/sysroots/cortexa9hf-vfp-neon-oe-linux-gnueabi

  • ECHO$ARCH=ARM

  • ECHO$CFLAGS:O2-PIPE-g-FELIMATE-UNUSED-DEBUG-TYES

  • 回显$LD:ARM-OE-linux-gnueabi-eld--sysroot=/usr/local/oecore-x86_64/sysroots/cortexa9hf-vfp-neon-oe-linux-gnueabi

  • 回应$LDFLAGS:-WL,-O1-WL,--HASH-STYLE=GNU-WL,--按需-WL,--按需

当我启动"make命令"时,我收到以下错误:

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:导出LDFLAGS=‘’,在此之后,make命令起作用,我得到了模块kaodv.ko。但当我把它插入我的手臂检查时,它不起作用。它实际上冻结了我终端

所以我的问题是,我必须在编译时指定LDFLAGS吗?撤回LDFLAGS会对生成的内核模块产生影响吗?事实上,我试图理解哪里可能有问题,我唯一想到的是,我可能不应该手动更改LDFLAGS。但是,如果我不更改de LDFLAGS,我会收到UnRecognded Option错误。

与此相关的第二个问题是,LDFLAGS的可能价值是什么在ARM编译中

谢谢!!

推荐答案

在基于GCC的工具链中有两种常见的调用链接器的方法。一种是直接做,另一种是用GCC作为前端调用链接器,而不是直接调用。在执行此操作时,用于链接器的选项以-Wl,为前缀,以便GCC知道传递它们而不是自己解释它们。

在您的情况下,错误消息来自LD本身

表示您的构建系统正在通过GCC将LDFLAGS直接传递给链接器,而不是

因此,您应该删除-Wl,前缀,您的LDFLAGS将改为

(重复最后一个参数可能没有意义,但有益)

这篇关于LDFLAGS的含义是什么的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

1403页,肝出来的..

09-08 23:08