Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gcc 如何向每个链接添加对象文件_Gcc_Ld_Specifications - Fatal编程技术网

Gcc 如何向每个链接添加对象文件

Gcc 如何向每个链接添加对象文件,gcc,ld,specifications,Gcc,Ld,Specifications,这是一个让我们陷入困境的问题。作为解决方法,我们提取了丢失的对象并将其放入对象文件中。将此对象文件添加到每个链接可以消除问题 虽然将其直接添加到LDFLAGS似乎是一个很好的解决方案,但这不起作用,因为例如libtool无法处理其中的非la文件 一个更具可移植性的解决方案似乎是直接修补gcc规范,将其添加到每个链接中。我想出了 *startfile: + %{shared-libgcc:%{O*:%{!O0:/PATH/TO/ostream-inst.o}}} 其中,ostream-inst.

这是一个让我们陷入困境的问题。作为解决方法,我们提取了丢失的对象并将其放入对象文件中。将此对象文件添加到每个链接可以消除问题

虽然将其直接添加到
LDFLAGS
似乎是一个很好的解决方案,但这不起作用,因为例如
libtool
无法处理其中的非la文件

一个更具可移植性的解决方案似乎是直接修补gcc规范,将其添加到每个链接中。我想出了

*startfile:
+ %{shared-libgcc:%{O*:%{!O0:/PATH/TO/ostream-inst.o}}}
其中,
ostream-inst.o
被添加到链接中使用的起始文件列表中,用于编译具有优化功能的共享库

尝试使用此规范编译boost会出现一些错误,因为它的构建直接使用
ld
--startgroup
/
--endgroup
设置一些对象


我应该如何更新该规范以涵盖该情况,或者更好地涵盖所有情况?

浏览此URL


如果这对您有帮助,那就太好了。

我知道这不是您想要听到的答案(因为您在问题中另外指定了答案),但是您在这里遇到了麻烦,并且可能会遇到更多问题,因为您的编译器有缺陷。您应该找到一种替换它的方法,因为您将发现在下次出现一些模糊的构建系统时,您将编写更多的围绕代码的工作。那里不仅有比亚姆


对不起,我不能再帮你了。您可以尝试手工编写一个.lo文件(毕竟它是一个两行程序)并将其插入到LDFLAGS中。

如果它是GCC4.3的错误,您是否尝试构建(通过从源代码编译)并使用更新的GCC。GCC 4.6.2即将发布。你考虑使用它吗?

谢谢你的评论。实际上,我的问题不在于bjam,而在于boost的build使用的花哨旗帜。修补gcc规范的整个要点是使此修复程序可以由多个构建系统使用(目前它与automake、make、cmake和basic bjam一起使用)。将
*.lo
文件填充到LDFLAGS中可能看起来不错,但这会破坏不使用libtool的任何功能(例如基本make)。然后我宁愿继续看
libtool
关于链接非libtool对象的不可移植性的警告。这是政府的事。