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

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

我不清楚使用devtools的含义,我希望有人可以解释.

>如果我使用devtools编译程序,这是否意味着可执行文件将在其他Centos 6.4安装上运行而不进行更改?
>或者..我知道必须用我编译的程序运送库或其他文件吗?
>如果是这样的话……我是否必须修改我的C代码以引用后面的库?或者这是由安装我编译的程序的人完成的

最佳答案 我希望这个有点迟到的答案仍然可以帮到你.我发现在RHEL 6.4上用devtoolset编译我的项目(在我的情况下为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.

点赞