2013-07-31 72 views
0

我的工作通常是從Internet開源。使用MIPSEL工具鏈進行交叉編譯並獲取二進制文件。我爲了交叉編譯代碼而苦苦掙扎。通常要交叉編譯任何源代碼包的步驟是什麼?我使用Linux平臺。例如,CC,LD和其他什麼? 每個源代碼都有不同的結構,我無法弄清楚軟件包之間的相似性。我怎麼能交叉編譯它呢?有沒有系統的步驟來完成它?請指教。通常爲特定目標交叉編譯任何開源代碼的步驟

+0

你想交叉編譯什麼? MIPSEL只會講述關於CPU的一些事情,您是針對Linux還是其他一些操作系統? – fvu

+0

我在做連接管理器。架構是MIPSEL,OS是Linux。 –

回答

1

我只能假設你下載了一些隨機的OSS tar包,現在卡住了。我只能給你一些提示,因爲我還沒有發現一種通用的,一刀切的解決方案,但在找到最適合你的需求的方法之前,你可能不得不嘗試一下。而且我還沒有遇到過從頭到尾不經過一些調整,擺弄和大量耐心的非平凡交叉編譯工作。

  1. 基本的解決方案:你需要爲你的平臺工具鏈,看看here如果有什麼預構建滿足您的需求,或者到Dan Kegel's crosstool page,這將在很大程度上自動化工具鏈的建立爲它支持的平臺,並且該工具鏈將允許您編譯和鏈接除標準庫之外沒有其他依賴項的所有程序。
  2. 許多開源軟件包都帶有autoconf配置腳本,這些腳本是交叉編譯感知的,即添加--target=xxxx實際上會使它們使用正確的交叉編譯器。這通常會起作用,但它可能涉及首先下載和交叉編譯/安裝某些庫。主要問題將是一個autoconf腳本,它試圖編譯一小段代碼來研究其輸出,以確定環境的某些功能。有時,這可以通過手動修改配置,或通過例如禁用某些不需要的功能configure --without-xxxx
  3. 如果你的目標系統是一個嵌入式Linux系統工具,如BuildrootOpenEmbeddedELDK將自動不僅可用工具鏈的創建來解決,但也是許多常用庫的交叉編譯,並添加到Linux的包上。這些工具還允許您將其他軟件包添加到其目標列表(例如,您創建或購買的自定義應用程序),但這可能涉及手動解決第2)節中解釋的一些問題。但是這些工具附帶的補丁腳本可以用於瞭解常用技巧以解決編譯問題。
+0

謝謝!我有一個MIPSEL-Linux工具鏈。最近,我嘗試了MIPSEL-Linux的交叉連接管理器,發現相當困難。另外,我嘗試了ECLIPSE-TCF的交叉編譯工具。所有這些都會導致我一個問題。 X86 Linux中有很多實用程序,當我需要爲嵌入式框進行編譯時,它的源代碼是相同的,這並不容易。如果你有任何一般的指導方針。請與示例分享。謝謝 !非常。 –

+0

這就是我試圖解釋的,據我所知,沒有一種萬能解決方案。大量在互聯網上搜索會有所幫助,而且有幾個社區的論壇充斥着從事交叉編譯工作的人員。但是有一個嚴重的學習曲線,我同意這一點。 – fvu