2010-12-22 15 views
2

我的發行版(Arch Linux)最近增加了其工具鏈支持的最低Linux內核版本。我正在編譯一個靜態鏈接的Web應用程序,然後上傳到Web服務器,並且Web服務器上的內核版本對於使用新工具鏈編譯的靜態庫來說太舊了。 (當我嘗試在服務器上運行靜態二進制文件時,我遇到了分段錯誤。)有沒有一種方法可以使用GNU工具鏈(GCC,binutils,glibc)來編譯應用程序,從而將需要更新內核版本的功能省略掉?編譯靜態庫時設置較早的最低內核版本

回答

1

Glibc的兼容性實際上只能保證在一個方向上。 (較舊的二進制文件適用於較新的系統;反之亦然,不一定如此)。

爲了保證您的二進制文件可以在舊系統上運行,請使用舊版glibc編譯鏈接。最簡單的方法是找到一個較舊的發行版,但我建議設置一個「crosstool」或類似的交叉編譯工具鏈,以針對與您的構建系統使用的不同的libc(這允許跨主機重複構建,而不管系統是什麼)。

0

謝謝。我還發現了glibc的--enable-kernel選項,可以使用早期的內核。