2012-05-06 89 views
0

我的環境是arm-linux-androideabi(東芝AC100上的Android 2.2)。我有2套GCC編譯爲我的環境(安裝在設備上的不同地點):是否可以混合不同版本的gcc和ld?

  1. 4.4.3(Android NDK on Android
  2. 4.6.0(R + GCC on Android

這個問題我面對的是,每當它運行的是gcc-4.6.0段錯誤(但它成功運行每一項工作,只是在段錯誤結束,可能在出口程序),而LD-4.4.3和AR-4.4.3無法運行我的環境。另一方面,gcc-4.4.3運行的很好,就像ld-4.6.0和ar-4.6.0一樣。因此,在我的設備上構建時,如果使用4.4.3運行configure,它將在配置步驟失敗,因爲即使配置測試程序編譯成功,gcc segfaults也將返回非零值( 139)。但是,如果我運行4.6.0配置,運行配置不夠好,但構建(make all)在聯和靜態庫創建悲慘的失敗了。

我的問題是:

  1. 是否有可能使用gcc-4.4.3編譯我的目標文件(gcc-4.4.3 -c input.c),然後用LD-4.6.0(ld-4.6.0 -o input input.o -lc)鏈接?也就是說,我將刪除有問題的二進制文件,並使用工作二進制文件的組合來構建項目。
  2. 如果有警告,那麼它們是什麼?
+0

沒有嘗試,但我不知道庫(頭)將編譯器使用什麼連接器將連接。也許你將不得不盡快告訴他們...... – dbrank0

+0

我張貼了這個問題,我意識到我已經嘗試過了,看到。然而,正如你的評論所表明的那樣,我需要研究很多警告。 – Samveen

回答

-1

您可以使用shell腳本,以隱藏壞退出代碼調用gcc的。

+0

我已經這樣做了。不過,即使編譯失敗,gcc包裝器也會返回true,因爲退出代碼始終是針對分段錯誤返回的代碼(139)。 – Samveen

+0

也許你可以檢查是否生成了可執行文件並返回成功,否則返回錯誤代碼?當然,整個事情仍然是一個黑客... – gfour

+0

當然,這將是一個黑客攻擊。因此,這個問題... – Samveen

相關問題