6

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

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

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

1 回答 1

3

我希望这个有点晚的答案仍然可以帮助你。我发现devtoolset在 RHEL 6.4 上使用(在我的情况下为 1.1,但这应该无关紧要)编译我的项目会生成几乎可以在标准 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++链接时添加即可。
于 2014-05-05T09:55:30.800 回答