【发布时间】:2013-03-09 21:59:19
【问题描述】:
我正在尝试使用gcc-arm-linux-gnueabi 和-nostdlib 为嵌入式ARM 处理器进行编译,以删除对c 库和启动文件的依赖。该芯片没有任何解释精灵文件的方法,因此使用objcopy -O binary,我可以从中删除精灵头文件。但是,如果我将构建 ID 保留在其中,那么二进制文件在输出的开头就有构建 ID,因此它无法运行。我可以使用/DISCARD/ : { *(.note.gnu.build-id) *(.ARM.attributes) } 删除链接器脚本中的构建ID,但是链接器会警告.note.gnu.build-id section discarded, --build-id ignored.。虽然这工作正常,并且代码在芯片上运行良好,但我不想通过然后删除构建 ID。有什么方法可以指示gcc 将命令传递给链接器而不传递--build-id?
【问题讨论】:
-
如果您想从
gcc传递链接器选项,可以使用-Wl,<LINKER_OPTION>。你问的是这个吗? -
您也可以随时使用
--remove-section选项来代替objcopy。 -
或者您可以将构建 ID 粘贴到开始以外的其他位置,如果它最终可能有用的话。