首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LDFLAGS的意义是什么?

LDFLAGS的意义是什么?
EN

Stack Overflow用户
提问于 2014-08-20 14:26:43
回答 2查看 15.4K关注 0票数 5

我正在为ARM linux编译AODV。我使用SabreLite作为带有内核版本3.0.35_4.1.0的板。值得一提的是,我正在使用openembedded为我的板创建我的Linux发行版。AODV源代码(http://sourceforge.net/projects/aodvuu/)有一个自述文件,该文件给出了一些关于如何在ARM上安装它的说明,如这里所述。(arm.html)。

我能够升级makefile以便与post 2.6内核版本一起使用(如上所述,我有3.0.35_4.1.0内核版本)。因此,基本上,我要做的是,我必须创建一个模块(比如file.ko),然后将它加载到ARM中(使用不平滑的file.ko命令)。

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

  • 回波$CC :手臂-oe-linux-gnueabi-gcc-hard=arm 7-a-m姆指-mfloat-abi=硬-mfpu=neon -m调音=皮层-a9$CC
  • 回波$ARCH=arm
  • 回波$CFLAGS: O2 -pipe -g -feliminate未使用-调试-类型
  • --sysroot=/usr/local/oecore-x86_64/sysroots/cortexa9hf-vfp-neon-oe-linux-gnueabi $LD : arm-oe-linux-gnueabi-ld
  • $LDFLAGS:-Wl,-O1 -Wl,--散列样式=gnu -Wl,--需要的-Wl,--需要的

当我启动"make command“时,我会得到以下错误:

/home/scof/script_emulation/AODV/aodv-uu/lnx/kaodv.o LD M

arm-oe gnueabi-ld:未识别选项'-Wl,-O1'

arm-oe gnueabi-ld:使用--帮助选项获取使用信息

它说链接器有问题。这个链接器来自交叉编译工具,我通常不应该碰它。

无论如何,为了修复上面的错误,我尝试像这样提取LDFLAGS:export =‘’,在此之后,make命令工作,我得到模块kaodv.ko。但是当我把它插入我的手臂检查时,它不起作用。它实际上冻结了我的终端

因此,我的问题是,在编译时是否必须指定LDFLAGS?退出LDFLAGS会对生成的内核模块产生影响吗?实际上,我试着理解哪里可能是问题所在,我唯一想到的就是我不应该手动更改LDFLAGS。但是如果我不更改de,我就会得到一个无法识别的选项错误。

我的第二个问题是,LDFLAGS在ARM编译中的可能价值是什么?

谢谢!!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-20 15:33:41

$LDFLAGS:-Wl,-O1 -Wl,--散列样式=gnu -Wl,--需要的-Wl,--需要的

在基于GCC的工具链中调用链接器有两种常见的方法。一个是直接做,另一个是用GCC作为前端调用链接器,而不是直接调用它。在这样做时,为链接器准备的选项以-Wl,作为前缀,以便GCC知道如何通过它们,而不是自己解释它们。

在您的例子中,来自LD本身的错误消息

arm- option gnueabi-ld:未识别选项'-Wl,-O1‘

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

因此,您应该删除-Wl,前缀,而您的LDFLAGS应该是

-O1 -散列样式=gnu-按需按需

(最后一个论点的重复可能毫无意义,但却是良性的)

票数 17
EN

Stack Overflow用户

发布于 2014-08-20 14:31:37

-O1是一个告诉链接器优化的选项。我相信这是新的东西,你的链接器可能有点过时了。尝试删除-Wl,-O1,它应该仍然有效。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25407320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档