gpt4 book ai didi

c++ - RedHat devtoolset - 对分发编译代码的影响

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:10:53 24 4
gpt4 key购买 nike

我运行的是 CentOS 6.4,需要更高版本的 C++ 编译器来构建我的开发工具(在本例中为 Qt Creator)。

我不清楚使用 devtools 的含义,我希望有人能解释一下。

  1. 如果我使用 devtools 编译程序,这是否意味着可执行文件将在其他 Centos 6.4 安装上运行而无需更改?
  2. 或者..我知道我编译的程序必须附带库或其他文件吗?
  3. 如果是这样...我是否必须修改我的 C++ 代码以引用后来的库?或者这是由安装我编译的程序的人完成的

最佳答案

我希望这个有点晚的回答仍然可以帮助到你。我发现在 RHEL 6.4 上使用 devtoolset(在我的例子中是 1.1,但这应该无关紧要)编译我的项目生成的二进制文件可以 almost 在标准的 RedHat EL 6.4 上运行(对于 Centos 6.4 应该类似)。

我遇到的唯一麻烦是使用 -std=c++11 编译我的项目,由于不兼容的符号而产生了一些问题。原因是 GCC 人员认为标准库的这些部分在 GCC 4.4 中是实验性的,因此他们在某些地方破坏了 ABI 兼容性。

事实证明,有一个简单的解决方法:将您的程序与额外的命令行参数-static-libstdc++ 链接起来。这样,二进制文件会变得更大一些,但可以在未修改的 RHEL 6.4 上运行,而无需为 devtoolset 安装额外的库/更新。

要明确回答您的问题:

  1. 是的,差不多。
  2. 没有。
  3. 不要更改代码,只需在链接时添加-static-libstdc++

关于c++ - RedHat devtoolset - 对分发编译代码的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19415859/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com