我所有的Linux系統(Fedora 9中)在標準共享庫指定ELFOSABI_NONE(0)作爲OSABI。共享庫的ELF頭爲什麼會指定Linux作爲OSABI?
這是精 - 但是我已經從其中OSABI在ELF頭給定供應商接收到的共享庫ELFOSABI_LINUX(3)。
這不是聲音就像一個用於Linux系統的共享庫的不合理價值,但它與我所有其他庫的價值不同 - 所以當我嘗試打開此庫時, dlopen(),從我的其他庫之一,這失敗了錯誤「ELF文件操作系統ABI無效」。
我編譯了FreeBSD實用程序brandelf.c,並用它將OSABI類型更改爲0,現在庫似乎與其他所有內容一起玩。
我只是想知道 - 爲什麼你認爲這個庫被標記爲ELFOSABI_LINUX?我猜可能是他們在另一個系統上交叉編譯並指定了一些gcc標誌,導致這個值被設置到ELF頭文件中?我試圖實現類似的東西,但無法確定適當的gcc標誌或標誌。
我想知道的可能的原因是什麼,因爲這特定供應商不會做任何事情,沒有很多手握持的,我希望能夠說「你可能在做X但這意味着我們有在我們收到它們之後修改你的圖書館「。