我正在运行 CentOS 6.4,需要更高版本的 C++ 编译器来构建我的开发工具(本例中为 Qt Creator)。
我不清楚使用 devtools 的含义,我希望有人能解释一下。
- 如果我使用 devtools 编译程序,这是否意味着可执行文件将在其他 Centos 6.4 安装上运行而无需更改?
- 或者..我是否知道必须将库或其他文件与我编译的程序一起提供?
- 如果是这样...我是否必须修改我的 C++ 代码才能引用以后的库?或者这是由安装我编译的程序的人完成的
我正在运行 CentOS 6.4,需要更高版本的 C++ 编译器来构建我的开发工具(本例中为 Qt Creator)。
我不清楚使用 devtools 的含义,我希望有人能解释一下。
我希望这个有点晚的答案仍然可以帮助你。我发现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
.
要明确回答您的问题:
-static-libstdc++
链接时添加即可。