我正在運行CentOS 6.4,需要更高版本的C++編譯器來構建我的開發工具(本例中爲Qt Creator)。RedHat devtoolset - 分發已編譯代碼的含義
我不清楚使用devtools的影響,我希望有人能解釋。
- 如果我使用devtools編譯程序,這是否意味着可執行文件將在其他Centos 6.4安裝中運行而不會發生變化?
- 或..我知道必須運送我編譯的程序庫或其他文件嗎?
- 如果是的話......我必須修改我的C++代碼來引用後面的庫嗎?或者這是由安裝我編譯的程序的人完成的
我正在運行CentOS 6.4,需要更高版本的C++編譯器來構建我的開發工具(本例中爲Qt Creator)。RedHat devtoolset - 分發已編譯代碼的含義
我不清楚使用devtools的影響,我希望有人能解釋。
我希望這個有點晚的答案仍然可以幫助你。我發現在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上運行,而無需爲安裝額外的庫/更新。
要明確地回答你的問題:
-static-libstdc++
即可。您也可以使用二進制應用程序重新分發libstdC++共享庫 – Juan
您可能意思是devtoolset而非devtools – marcin