linux編譯arm
編譯器的問題,更換交叉編譯鏈即可
另外編譯內核推薦使用使用make bzImage ARCH=arm CROSS_COMPILE=arm-linux-
在編譯之前請先配置內核make menuconfig ARCH=arm
② 程序Linux系統下運行ARM程序的實踐linux運行arm
Linux是一款UNIX-like類型操作系統,在這種系統中,可以實現各種嵌入式操作系統應用。ARM程序是指在ARM架構中,特別是特定類型的處理器(ARM Cortex-M),使用編程語言(如C語言)來編寫的代碼,在此背景下,將介紹如何在Linux系統下運行ARM程序的實踐。
一、首先,需要在計算機上安裝合適的編程語言開發環境,常用的編程語言有C, C++, Java等,而我們要編寫ARM程序,可以使用特定的編程語言,比如GNU C, C++ Compiler, ARM官方GNU Toolchain以及LLVM。
二、接下來,需要選擇ARM架構支持的操作系統,常見的操作系統支持ARM有Linux,Windows,Adroid,嵌入式LINUX。在本文實踐中,我們採用Linux系統作為ARM程序的運行環境。
三、為了在Linux系統中,運行ARM程序,需要安裝ARM模擬器。常見的ARM模擬器有QEMU,Bochs,Raspberry Pi等。這里我們採用QEMU模擬器來運行ARM程序。另外,還需要安裝QEMU的ARM模擬器工具,以便能夠運行ARM程序,這個工具包括ARM匯編語言,ARM實用庫,ARM交叉編譯器和ARM運行庫。
四、最後,使用ARM模擬器完成ARM程序的編譯與運行,編譯ARM程序要用到交叉編譯器,它可以將程序從源代碼編譯成ARM架構下的可執行代碼,而運行ARM程序,需要在ARM模擬器中調用QEMU相應的應用,就可以將ARM程序轉換成代碼運行在模擬器中。
總之,在Linux系統下運行ARM程序,需要安裝相應的開發環境與ARM模擬器,並使用ARM編譯器交叉編譯程序,然後在模擬器中運行ARM程序,實踐中的能實現上述要求的過程,也只能算作一種初步嘗試,為了更好的實現在Linux中運行ARM程序,還需要我們繼續做出努力。
③ 深度linux的arm-linux-gnueabihf-gcc編譯參數如何配
一般來說,交叉編譯工具是用於在一種架構的主機(例如x86)上,編譯另一種主機(例如arm)運行的程序,在這個編譯期間,需要用到的頭文件/庫,往往需要從一個叫目標文件系統(sysroot)的路徑開始查找。
sysroot里包含usr,lib,usr/lib usr/include等文件夾結構和必要的頭文件和庫,你理解為目標機器上的整個文件系統,搬到你這台電腦上,然後作為一個文件夾存在。
交叉編譯原則上不能用主機(host)的頭文件,
這首先是因為編譯器在查找頭文件的相對路徑時,交叉編譯器會配置為查找目標平台架構的位置,和主機的gcc不一樣,這也是為什麼它去arm-linux-gnueabihf這個目錄去尋找的原因。
其次主機和目標機的系統版本有差異,再加上處理器架構的差異,往往有很多兼容性問題,甚至有難以解決的編譯錯誤。
如果一定要用本機的頭文件系統來湊合,那麼需要把所有的-I都列出來,即不僅需要-I/usr/include,還需要-I/usr/include/xxx,甚至要創建一些文件夾的符號鏈接指向你主機的這些頭文件文件夾。即使這些,往往也未必成功,有些頭文件不同的系統架構,會不完全一樣甚至缺失。
交叉編譯一般無法使用主機的庫(so)文件
主機和目標機往往架構不同,庫完全不能使用
可能遇到主機和目標機架構相同的情況,比如你在intel64上編譯一套運行在intel64位手機的程序,但是庫兼容性的問題仍然存在。
最後結論:你這個問題,如果你是為了另一套機器(比如arm開發板編譯),那麼需要搞一套目標機的文件系統才能順利編譯。
對了,目標文件系統需要編譯了python和dev頭文件/庫,好多嵌入式設備裁剪的很厲害,都不用python。