Linux作業系統在ARM上 的移植過程及分析
阿新 • • 發佈:2019-02-06
1) 下載安裝包檔案和補丁程式:gcc-2.95.3.tar.gz;gcc-2.95.3.diff.bz2
2) 解開安裝包到當前目錄下:
tar zxf gcc-2.95.3.tar.gz,此時在當前目錄下生成一個 gcc-2.95.3 目錄,進入該目錄。
3) 對當前的安裝包打補丁:
bzcat ../gcc-2.95.3.diff.bz2 | patch -p1。
4) 修改 gcc/config/arm/t-linux 檔案,在檔案最後加上如下條件編譯選項:
T_CFLAGS = -Dinhibit_libc -D__gthr_posix_h。
5) 配置安裝包:./configure --target=arm-linux --prefix=/usr/local --with-headers=arm linux原始碼目錄下的include目錄。
這裡前兩個選項和上面binutils的安裝類似,--withheaders是用來指定核心標頭檔案的目錄,一般就可以使用上面ARM linux的include目錄。需要注意的是這裡的路徑需要用全路徑名,而不能使用相對路徑。
6 ) 編譯原始碼:make LANGUAGE=“C ”
這裡因為還沒有一個ARM可用的glibc,所以只能編譯C 語言的交叉編譯工具。如果在編譯好 glibc 之後,就可以回來重新編譯gcc,以支援其他語言。
7) 安裝編譯好的工具:make install LANGUAGE=“C”
安裝成功以後,arm-elf-gcc將安裝在/usr/local/arm-linux目錄下。有了安裝好的binutils和gcc工具,就可以用來編譯ARM Linux核心了。如果需要在ARM Linux 做應用程式的開發,就還需要一個glibc庫的支援。
1.2.3. glibc 庫
glibc 的編譯需要為剛才做好的ARM 交叉編譯器指定編譯器;否則編譯出的glibc程式碼將會是同時有ARM和 x86程式碼的混和體。
2.ARM Linux 的核心配置與編譯
1) 解開安裝包:tar zxf glibc-2.2.3.tar.gz。
此時在當前目錄下生成一個 glibc-2.2.3 目錄,進入該目錄。
2) 解開glibc-linuxthreads安裝包: tar zxvf ../glibc-linuxthreads-2.2.3.tar.gz
3) 設定編譯器: CC=arm-linuxgcc
4) 配置安裝包: ./configure arm-linux --build=i586-linux --prefix=/usr/local/arm-linux -enable-add-ons
arm-linux 表示選 ELF 格式的可執行格式,--build=i586-linux 表示用來製作交叉開發環境的宿主機的機器型別,--prefix=/usr/local/armlinux表示安裝的路徑,這裡不能指定為/usr/local,否則會把 /usr/local下的庫覆蓋掉,需要非常留意。
5) 編譯和安裝: make; make install
安裝成功後,glibc 庫將安裝在/usr/local/arm-linux 目錄下。
2) 解開安裝包到當前目錄下:
tar zxf gcc-2.95.3.tar.gz,此時在當前目錄下生成一個 gcc-2.95.3 目錄,進入該目錄。
3) 對當前的安裝包打補丁:
bzcat ../gcc-2.95.3.diff.bz2 | patch -p1。
4) 修改 gcc/config/arm/t-linux 檔案,在檔案最後加上如下條件編譯選項:
T_CFLAGS = -Dinhibit_libc -D__gthr_posix_h。
5) 配置安裝包:./configure --target=arm-linux --prefix=/usr/local --with-headers=arm linux原始碼目錄下的include目錄。
這裡前兩個選項和上面binutils的安裝類似,--withheaders是用來指定核心標頭檔案的目錄,一般就可以使用上面ARM linux的include目錄。需要注意的是這裡的路徑需要用全路徑名,而不能使用相對路徑。
6 ) 編譯原始碼:make LANGUAGE=“C ”
這裡因為還沒有一個ARM可用的glibc,所以只能編譯C 語言的交叉編譯工具。如果在編譯好 glibc 之後,就可以回來重新編譯gcc,以支援其他語言。
7) 安裝編譯好的工具:make install LANGUAGE=“C”
安裝成功以後,arm-elf-gcc將安裝在/usr/local/arm-linux目錄下。有了安裝好的binutils和gcc工具,就可以用來編譯ARM Linux核心了。如果需要在ARM Linux 做應用程式的開發,就還需要一個glibc庫的支援。
1.2.3. glibc 庫
glibc 的編譯需要為剛才做好的ARM 交叉編譯器指定編譯器;否則編譯出的glibc程式碼將會是同時有ARM和 x86程式碼的混和體。
2.ARM Linux 的核心配置與編譯
1) 解開安裝包:tar zxf glibc-2.2.3.tar.gz。
此時在當前目錄下生成一個 glibc-2.2.3 目錄,進入該目錄。
2) 解開glibc-linuxthreads安裝包: tar zxvf ../glibc-linuxthreads-2.2.3.tar.gz
3) 設定編譯器: CC=arm-linuxgcc
4) 配置安裝包: ./configure arm-linux --build=i586-linux --prefix=/usr/local/arm-linux -enable-add-ons
arm-linux 表示選 ELF 格式的可執行格式,--build=i586-linux 表示用來製作交叉開發環境的宿主機的機器型別,--prefix=/usr/local/armlinux表示安裝的路徑,這裡不能指定為/usr/local,否則會把 /usr/local下的庫覆蓋掉,需要非常留意。
5) 編譯和安裝: make; make install
安裝成功後,glibc 庫將安裝在/usr/local/arm-linux 目錄下。