我写了一些自定义的c++代码,它在ubuntu中运行良好,但当我将它上传到我的服务器(使用centos5)时,它失败了,并提示库已过时。我到处搜索,centos不能使用最新的库。我如何才能对stl进行编译,使其包含在二进制文件中,并且centos使用旧的库并不重要?
附言:我不想把源代码上传到服务器上,然后在那里编译。
发布于 2009-09-02 22:51:58
在链接步骤中,您可以简单地向gcc添加"-static“标志:http://gcc.gnu.org/onlinedocs/gcc-4.4.1/gcc/Link-Options.html#Link-Options
发布于 2009-09-02 22:52:15
gcc -lgcc_s -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic
选择你喜欢的任何东西。请注意,方法(2)和(3)可能会出现依赖关系的问题:您的项目(特别是静态链接的stdc++实现,现在是应用程序的一部分)可能需要在centos上的系统库中呈现一些函数。如果没有这样的函数,你的应用程序就不会启动。之所以会发生这种情况,是因为您正在编译的ubuntu系统是较新的,并且linux库中没有保留向前兼容性。
https://stackoverflow.com/questions/1370537
复制相似问题