首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >构建环境如何在自动配置构建中引入新的LDFLAGS?

构建环境如何在自动配置构建中引入新的LDFLAGS?
EN

Stack Overflow用户
提问于 2017-11-09 01:21:17
回答 3查看 981关注 0票数 2

我正在两个不同的构建环境(buildroot和Yocto)中构建相同的库(钛GBM)。Yocto的二进制文件工作,但是来自buildroot的二进制文件由于分段错误而失败。我比较了在这两个构建系统中由autoconfig生成的makefile,并注意到LDFLAGS中的差异。

约克托:

代码语言:javascript
运行
复制
LDFLAGS =  -L/home/kyle/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/lib -Wl,-rpath-link,/home/kyle/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/lib -Wl,-O1 -Wl,--hash-style=gnu

Buildroot:

代码语言:javascript
运行
复制
LDFLAGS = 

Yocto如何将这些新的链接器指令添加到makefile?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-11-09 16:51:40

Yocto如何将这些新的链接器指令添加到makefile?

Yocto没有积极地做任何事情--是configure脚本完成了这项工作。它的全部目的是分析其运行的系统,以确定所需的工具,找出适当的标志,并确定是否存在各种系统设施。这样做之后,它(通常)通过填充程序源代码中包含的模板为您创建一个或多个Makefile。它所填充的内容之一是LDFLAGS变量的值。

configure如何选择它所做的标志,部分取决于它是如何编写的,也部分取决于它是如何运行的。您可以在configure命令行上或通过它的环境指定一些变量,并且可以通过命令行选项影响其他变量。其中有些可能会产生级联效应。例如,yocto环境中对LDFLAGS的特定选择可能与所选择的C或C++编译器有关。

票数 1
EN

Stack Overflow用户

发布于 2017-11-09 06:06:23

Yocto如何在构建中引入这些新的链接器指令?

LDFLAGS是链接器选项,如果您熟悉gcc和其他命令行编译器前端,make将以这种方式在内部调用gcc (假设这里的c++ ):

代码语言:javascript
运行
复制
g++ CPPFLAGS CXXFLAGS SOURCE_CODE LDFLAGS LDADD

下面是一个示例,说明在Yocto中显示的LDFLAGS是什么样子

代码语言:javascript
运行
复制
g++ -Wall -g -O3 -o output myfiles... -L/home/kyle/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/lib -Wl,-rpath-link,/home/kyle/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/lib -Wl,-O1 -Wl,--hash-style=gnu

至于LDFLAGS价值的含义是什么?

代码语言:javascript
运行
复制
-L/home/kyle/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/lib -Wl,-rpath-link,/home/kyle/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/lib -Wl,-O1 -Wl,--hash-style=gnu` 

这意味着:

  • 目录中的搜索库:/home/kyle/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/lib
  • 路径中的动态链接库:/home/kyle/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/lib
票数 1
EN

Stack Overflow用户

发布于 2017-11-09 03:54:25

当运行configure脚本时,它会将环境中某些特定变量的值保存到Makefile中。LDFLAGS是其中一个变量,称为“宝贵变量”。

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

https://stackoverflow.com/questions/47192400

复制
相关文章

相似问题

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