2012-06-27 118 views
4

我已經在Ubuntu服務器上編譯了我的預加載文件(x32和x64有兩個文件)。在哪裏可以獲得列表,我將在哪些操作系統中看到我編譯的文件是兼容的,以及我應該重新編譯兼容性的內容?G ++ ABI兼容性列表

謝謝!

回答

4

使用Linux App Checker由ISPRAS和The Linux Foundation開發。它旨在爲Linux應用程序執行跨發行版兼容性檢查。請參閱示例報告here

enter image description here

+0

這看起來相當強大,並且比運行多個虛擬機更流暢。 –

+0

謝謝!像FeeBSD這樣的unix操作系統,這個檢查器可以檢查它嗎? – Robert

+0

Linux二進制兼容性在FreeBSD中默認不打開。你需要很多額外的軟件。請參閱FreeBSD手冊中的[第11章Linux二進制兼容性](http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/linuxemu.html)。所以,檢查器不支持它。 – aponomarenko

0

我會先嚐試在虛擬機中的各種Linux發行版上執行該程序。選擇前三名最受歡迎的Linux發行版或您的用戶最有可能擁有的發行版。另外,你最好分發一個靜態鏈接的二進制文件,並將源代碼提供給希望自己構建它的其他人(如果允許分發源代碼的話)。

0

我不知道我是否完全理解你,但是,如果我的理解沒有錯,我會從ldd -v開始。任何體系結構兼容的操作系統都有依賴庫安裝在兼容版本中應該可以工作。接下來,如果你打算支持更多的體系結構,你需要明確地知道它併爲它的每一個進行交叉編譯。

所以,你必須重新編譯: 1.每個不同的架構。 2.當庫版本不兼容時。

這最後一個更棘手,因爲你的代碼可能需要特定的版本才能工作,但無論如何你必須從頭開始瞭解它。

請告訴我,如果它不是你想要的。

+0

我只是想檢查我的Linux編譯LD_PRELOAD將上下工夫,例如Solaris。我的編譯命令是g ++ -fPIC -m32 -shared -Wl,-soname,test.so -ldl -o test.so test.cpp – Robert

+0

我不認爲Solaris二進制裝載器會加載沒有任何抱怨的Linux編譯的ELF,即使它針對相同的架構。我無法對其進行測試,但如果您可以通過一個簡單的完全靜態鏈接測試來完成測試,那將非常高興。我的猜測是,當您更改操作系統(Solaris,BSD等)時,您將始終需要重新編譯。 – j4x