2012-10-17 31 views
1

我有一個程序,我在機器A上使用CMake進行編譯,但我想在舊機器上運行它B.當我這樣做時,我得到以下內容:試圖在舊機器上使用新的libstdC++導致錯誤

/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ./program) 
/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ./program) 
/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by ./program) 

我看到this question,我想解決我的問題。將複製新版本到機器B.所以我複製從A到~/lib第B /usr/lib/libstdc++.so.6(和libstdc++.so.6.0.14),並做了

export LD_LIBRARY_PATH=~/lib:$LD_LIBRARY_PATH 
的最佳方式之後的

。當我開始我的程序時,我現在得到

Floating point exception 

我能做些什麼來使它工作?

+0

我知道這很糟糕,並不是你想聽到的,但是如果你需要在老版本的glibc/libstdC++上運行代碼,請在系統上編譯你需要的最舊版本的代碼。舊的庫和新的編譯器不兼容,在Linux上替換或取代libc/libstdC++大多數時候會讓你後退。 – rubenvb

回答

0

正如您發現的那樣,您需要在較舊的系統上安裝較新的libstdc++.so.6,並告訴動態鏈接程序如何找到它。

請參閱在libstdC++ FAQ和Finding Dynamic or Shared Libraries的手冊中,瞭解如何確保找到它的詳細信息以及幾個選項。 LD_LIBRARY_PATH只是其中一個選項。

浮點異常不應與libstdC++相關,您需要使用調試器來查找來自哪裏並獲取更多詳細信息。

相關問題