首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >针对libc++静态编译

针对libc++静态编译
EN

Stack Overflow用户
提问于 2009-09-02 22:44:38
回答 2查看 623关注 0票数 1

我写了一些自定义的c++代码,它在ubuntu中运行良好,但当我将它上传到我的服务器(使用centos5)时,它失败了,并提示库已过时。我到处搜索,centos不能使用最新的库。我如何才能对stl进行编译,使其包含在二进制文件中,并且centos使用旧的库并不重要?

附言:我不想把源代码上传到服务器上,然后在那里编译。

EN

回答 2

Stack Overflow用户

发布于 2009-09-02 22:51:58

在链接步骤中,您可以简单地向gcc添加"-static“标志:http://gcc.gnu.org/onlinedocs/gcc-4.4.1/gcc/Link-Options.html#Link-Options

票数 3
EN

Stack Overflow用户

发布于 2009-09-02 22:52:15

  1. 你可以在你的Ubuntu机器上安装与你服务器上的库版本相匹配的编译器。
  2. 你可以在你的应用程序中安装从你编译它的系统中获取的libstdc++.so,前提是你调整链接使它被加载,而不是centos的。
  3. 你可以静态地编译它。为此,您应该将编译器从g++切换到

gcc -lgcc_s -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic

选择你喜欢的任何东西。请注意,方法(2)和(3)可能会出现依赖关系的问题:您的项目(特别是静态链接的stdc++实现,现在是应用程序的一部分)可能需要在centos上的系统库中呈现一些函数。如果没有这样的函数,你的应用程序就不会启动。之所以会发生这种情况,是因为您正在编译的ubuntu系统是较新的,并且linux库中没有保留向前兼容性。

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

https://stackoverflow.com/questions/1370537

复制
相关文章

相似问题

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