2014-03-29 81 views
5

我可以使用arm-linux-gnueabi-*工具鏈編譯使用我的android設備的文件(例如C或C++源代碼)嗎?arm-linux-gnueabi工具鏈與arm-linux-androideabi工具鏈。

我的問題似乎有點傻,但我會得到相同的結果與arm-linux-androideabi-*編譯工具鏈?

+1

你可以使用任何ARM的工具鏈爲ARM架構會爲你工作。(只記得32位/ 64位的差) –

+0

非常感謝你! – bolzano

回答

12

編譯可能不僅僅意味着將源代碼轉換爲二進制文件。像GCC這樣的編譯器也提供了某些庫,在這種情況下,用於處理硬件無法處理的內容。當編譯器成爲工具鏈時,它還提供了由編程語言標準化的運行時庫,類似於目標系統中提供的庫。在arm-linux-gnueabi-的情況下,可能是libcarm-linux-androideabi-bionic

可以生產兼容的目標文件由不同的編譯器使用,這就是elf是。

您可以生成靜態可執行文件,它可以在尺寸強大,他們應該在任何匹配的硬件/內核工作,因爲在這種情況下,工具鏈瞄準這一點。

但是,如果您生成動態可執行文件,那些文件只能在支持其相關性的系統上運行。因爲一個簡單的「hello world」應用程序不是由arm-linux-gnueabi-構建的靜態應用程序,因此它不能在Android系統上工作,因爲它提供仿生功能,而不是libc。