2011-08-11 28 views
1

我該如何避免這種情況?我有一個非常簡單的C++程序編譯在Ubuntu的盒子上。當我將其移動到Red Hat和嘗試執行它,我得到一個錯誤這樣的:在不同機器上使用二進制文件時共享對象錯誤

cannot find shared object stdlibc++5.so 

怎樣的商業軟件解決此得到的,安裝在用戶機器上的STDLIB將會有很大的差異。編譯時是否需要使用一些標誌?

+0

商業軟件必須提供多個二進制文件,這些二進制文件與受支持的發行版中的C和C++庫的主流版本鏈接。你*可以*靜態鏈接,但這相當不雅。 –

回答

2

我認爲你需要,因爲再次重新編譯:

  1. 操作系統是不同的[Ubuntu和紅帽]
  2. 庫的位置可能會有所不同。也有機會(儘管非常有用),stdC++庫根本不存在。
  3. 在商業軟件採用彙編語言,如C/C++,應用程序是 部署在相同的操作系統(包括開發和production..as據我所知),通常, 庫位置也是一致的

因此,請檢查您是否能夠編譯您的C++代碼(可能是hello world)並再次編譯您的代碼。

1

可能有多種原因,對於你所知道的, 目標機可能沒有安裝g ++及其庫。唯一的 真正的解決方案是靜態鏈接標準C++庫,使用 -static-libstdc++選項。