【发布时间】:2018-10-14 22:07:12
【问题描述】:
我有一个源代码,我正在尝试交叉编译 armv7 架构,它正在编译并生成二进制文件。当我在不同的目录中编译相同的代码时,生成的二进制文件与前一个不同。 为什么我会得到这种差异?不仅是二进制文件,目标文件也发生了变化。 我正在使用 arm-poky-linux-gnueabi-gcc。我使用以下命令创建的工具链 "source /opt/fsl-imx-x11/4.1.15.1.1/environment...." 等工具链也在导出编译器设置 (CLFAGS, LDFLAGS) 。
【问题讨论】:
-
如果您使用 yocto 生成 sdk 并按预期安装它,您应该能够交叉编译您的源代码。当你说
in a different directory时,它也意味着不同的终端? -
是的。不同的终端。如果我尝试在不同的文件夹中编译相同的代码,则会生成二进制文件,但如果我比较二进制文件,两者都是不同的。为什么这些变得不同?
-
因为在 source 环境时,只能在执行命令的终端中进行交叉编译。如果您切换到另一个终端,则必须再次执行该命令。否则,你为你的主机编译源代码。
-
是的,你是对的,我也在做同样的事情。
-
使用 readelf,(readlef -a -W) 我创建了一个报告,列出了两个版本的内容并进行了比较(使用 Beyond compare)。这表明两个二进制文件(ELF 格式)的构建 ID 不同。为什么在我进行交叉编译时这些 Build -ID 会变得不同。
标签: makefile cross-compiling yocto openembedded linux-toolchain