我試圖構建GCC作爲AIX的交叉編譯器;主機和構建平臺是Linux x86_64,目標是powerpc-aix5.2.0。我設法用本地AIX 6.1頭文件(從/usr/include)和libs(只有/usr/lib/{crt0.o,crt0_64.o)交叉編譯Binutils 2.20.1和GCC 4.4.7, libc.a,libc_r.a,libpthreads.a})。然後GCC正確交叉構建簡單的C代碼(如「你好,世界!」)分爲單機的可執行文件,但它拒絕交叉編譯共享對象:GCC可以交叉編譯AIX嗎?
collect2:初始化函數對象<路徑中找到交叉編譯libgcc_s.a>
我試圖用高達2.26結果相同的Binutils的新版本。
然後我發現下面的comment:
的Binutils進行了更新,以支持AIX 4.3.3,但一直沒有維護,改善或更新的AIX 5.它可以做簡單的事情,但不完全支持更高級的功能。例如,共享對象創建的某些方面不完整。
所以,我試圖重新建設有目標= PowerPC的aix4.3.0(唯一的區別這一次是我與- 禁用multilib的配置GCC以避免錯誤「無法識別的操作碼在上述工具鏈: `fmsub'「)。我嘗試了Binutils 2.20.1和Binutils 2.26,但我仍然得到了在對象libgcc_s.a中找到的錯誤init函數。
現在我想知道是否有交叉編譯的AIX版本,的共享對象,由GCC和Binutils支持。
爲什麼不在AIX上編譯?這本身就是一個有問題的平臺,你不必在交叉編譯時使它更成問題。 –
@ZsigmondLőrinczy原因很多,這裏有一些:企業網絡策略禁止將過時/未修補的操作系統連接到公司網絡。你想使用一個時髦的新的構建工具,不支持或容易在該平臺上編譯。您希望構建更快地發生,舊硬件正在限制您的構建速度。您的硬件出現故障,您沒有預算或傾向來更換它。您無法虛擬化您的構建機器,並且需要。舊的硬件/操作系統不支持您的備份軟件。 – Keeely
那麼,使用這種交叉編譯的二進制文件永遠是一場賭博:它可以工作與否。 (坦率地說,每個其他程序也是如此。) –