2017-02-13 88 views
0

我已經搜索了很多,沒有任何解決方案,所以我想我會把它放在這裏。Ubuntu到Centos的交叉編譯錯誤GLIBCXX

我的源代碼在Ubuntu上編譯得非常好,我想在我的Centos 7機器上使用它。爲了這個問題,我們假設在Centos上編譯代碼是完全不可能的。

每當我去運行我的應用程序,我收到一個錯誤說''GLIBCXX_3.4.21'找不到(需要....)「。當搜索我的CentOS的libstdC++。so.6時,我可以看到它只能到GLIBCXX_3.4.19。

如何在Ubuntu上使用libstdC++。so版本在我的3.4.19上停止編譯我的代碼,以便我可以輕鬆地在Centos 7上運行它?

回答

1

您將需要使用較舊的編譯器和附帶的libstdC++編譯,至少與CentOS附帶的GCC版本一樣舊。

另一種方法是靜態鏈接libgcc和libstdC++,雖然您有可能遇到與glibc相同的問題,但無法靜態鏈接。話雖如此,glibc可能毀了這個選擇。

百分之百確定的唯一「正確」方法是在CentOS主機上編譯或者讓sysroot複製其基本系統佈局。

另一個更正式的選擇是使用[Linux LSB編譯器] [1],它幾乎可以讓你在任何自我尊重的Linux發行版中兼容的基準。我不知道這種兼容性的程度,所以我不能與LSB分享任何經驗,我只知道它的存在和目的。

[1] https://wiki.linuxfoundation.org/en/Developers/LSB_Tutorial