1. 程式人生 > >Linux作業系統在ARM上 的移植過程及分析

Linux作業系統在ARM上 的移植過程及分析

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 目錄下。