2016-08-24 41 views
4

有什麼辦法來編譯GCC的的libstdC++與哈希SYSV風格,而不是GNU/Linux呢?我有一個工具鏈(通過crosstool-ng),用於編譯我們的公司庫,以處理各種各樣的Linux系統。編譯的libstdC++與哈希風格SYSV

其中一個系統是一個非常古老的RedHat,它只有SYSV哈希樣式,當我用工具鏈編譯一個C語言庫/程序時,它工作得很好,因爲生成的二進制文件使用SYSV。

但是,當我的libstdC++鏈接,二進制自動切換到GNU/Linux的風格,其原因就是因爲++的libstdc建爲GNU/Linux的,因此這個問題。

運行在這個系統中的二進制給我

ELF file OS ABI invalid 

只是爲了保持完整性,我已經嘗試輪候冊,錯誤 - 哈希風格= SYSV,都沒有成功。

此外,我有另一個ARM系統的工具鏈,它們具有相同版本的GCC,GLIBC等,但在此工具鏈中,libstdC++使用SYSV,不知道爲什麼。

在此先感謝!

回答

4

嘗試重建您的GCC --disable-gnu-unique-object配置選項。據對GCC配置選項文件:

--enable-GNU的唯一對象

- 禁用GNU的唯一對象

告訴GCC使用gnu_unique_object拆遷C++模板靜態數據成員和內聯函數本地靜態。默認情況下,對於具有接受GLIBC 2.11或更高版本的彙編程序的工具鏈啓用,否則禁用。

使用gnu_unique_object可能會導致您的最終可執行文件中出現GNU ABI,這在舊版Red Hat中不受支持。