我有一個非常簡單的C程序,它只使用標準庫函數進行一些加密計算。在OS X上編譯C程序以在Ubuntu上運行
我將在Ubuntu(10.04,32位)上運行該程序並使用帶-m32標誌的cc在OS X 10.6上對其進行編譯。當我嘗試在Ubuntu上運行它時,我收到錯誤消息「無法執行二進制文件」。
當我在Ubuntu上編譯它運行良好。
是否有任何簡單的方法將OS X上的代碼編譯爲可在Ubuntu上運行的二進制文件?如果不是,導致二進制不兼容的區別是什麼?
我有一個非常簡單的C程序,它只使用標準庫函數進行一些加密計算。在OS X上編譯C程序以在Ubuntu上運行
我將在Ubuntu(10.04,32位)上運行該程序並使用帶-m32標誌的cc在OS X 10.6上對其進行編譯。當我嘗試在Ubuntu上運行它時,我收到錯誤消息「無法執行二進制文件」。
當我在Ubuntu上編譯它運行良好。
是否有任何簡單的方法將OS X上的代碼編譯爲可在Ubuntu上運行的二進制文件?如果不是,導致二進制不兼容的區別是什麼?
恐怕你不能給出gcc的最小可移植性。
當然你可以構建一個交叉編譯器like this但我建議你使用和編譯一個Ubuntu虛擬機。
你可以!我之前完成了這個,成功了。GCC非常便攜。它是不可移植的支持結構(庫和內核接口)。建立你的交叉編譯器並不是特別容易,並且在這個領域有很多地雷不知情。鑑於現在無處不在的虛擬機,使用虛擬機更簡單,更安全。 –
您需要設置一個交叉編譯器。使用GNU工具鏈,過程看起來是這樣的:
我我從未嘗試將OSX作爲主機操作系統,所以我不知道是否還有其他複雜情況,但這是一般方法。我在記憶中工作,所以如果您需要更多幫助,請添加評論。
感謝您的信息。我想我將在VirtualBox中安裝Ubuntu的副本以用於編譯。這似乎是最簡單的路線。 –
您需要將Linux內核標題貼近您所定位的發行版。除非獲得這些內容,否則GLIBC無法連接到內核。 –
請注意,編譯gcc需要超過幾分鐘的時間......並且可能需要一些調查才能爲binutils和glibc獲取正確的配置選項。 – RBerteig
部分重複:http://stackoverflow.com/questions/5245444/cross-compiler-for-linux-on-mac-os-x這也鏈接到['crosstool-NG'](http:// crosstool -ng.org)。 – darvids0n