1. 程式人生 > >MiniGUI1.6.10交叉編譯配置以及開發板移植-Ubunbu11.10

MiniGUI1.6.10交叉編譯配置以及開發板移植-Ubunbu11.10



下載相關的壓縮包:

http://sourceforge.net/project/showfiles.php?group_id=231764&package_id=281013&release_id=617949。

1 安裝zlib
 
  由於Zlib庫的configure指令碼不支援交叉編譯選項,只好自己動手將gcc修改城只想我們的交叉編譯器,我的版本為arm-vfp-linux-gnu-gcc,命令列如下:
cd /usr/bin              
sudo mv gcc gcc-back     
sudo mv ld ld-bak
sudo ln -s /opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc ./gcc
sudo ln -s /opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-ld  ./ld

cd ~/libs/zlib-1.2.3/
  2 ./configure --prefix=/opt/libs --shared
  3 make
  4 sudo make install
後將編譯器改回去
cd /usr/bin
sudo rm gcc
sudo rm ld
sudo mv gcc-bak gcc
sudo mv ld-bak ld
完成後檢查/opt/libs下相應的標頭檔案和lib目錄下是否有關於zlib的檔案;
存在表示安裝完成,否則,手動拷貝;
2 安裝libpng-1.2.8tar
  zxvf libpng-1.2.8.tar.gz
  cd libpng-1.2.8
  因為png庫沒有configure 所以從scripts中拷貝合適的makefile來用
  cp scripts/makefile.linux  ./
  cp makefile.linux  makefile
  修改makefile中
   CC=/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc
   prefix=/opt/libs
   ZLIBLIB=/opt/libs/lib
   ZLIBINC=/opt/libs/include
   儲存退出後執行
   make  
   sudo make install
3 安裝libjpeg
執行下面配置檔案:
  1 #!/bin/sh
                                                                    
  2 ./configure  CC=/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc-4.4.3 --    build=i386-linux --host=arm-linux --target=arm-linux prefix=/opt/libs --enab    le-shared
  3 make
  4 sudo make install
問題1:
creating ./config.status
creating Makefile
creating jconfig.h
./libtool --mode=compile arm-linux-gcc -O2  -I. -c ./jcapimin.c
make: ./libtool:命令未找到
make: *** [jcapimin.lo] 錯誤 127
./libtool --mode=compile arm-linux-gcc -O2  -I. -c ./cjpeg.c
make: ./libtool:命令未找到
make: *** [cjpeg.lo] 錯誤 127
    
 將libtools下的兩個檔案烤過來
 cp /usr/share/libtool/config/config.sub  ./
 cp /usr/share/libtool/config/config.guess  ./
如果沒有安裝libtools 則執行
sudo  apt-get install libtool 進行安裝後再拷貝

問題2:
/usr/bin/install -c -m 644 ./cjpeg.1 /opt/libs/man/man1/cjpeg.1
/usr/bin/install: 無法建立普通檔案"/opt/libs/man/man1/cjpeg.1": 沒有那個檔案或目錄
make: *** [install] 錯誤 1

/opt/libs資料夾下建立目錄man/man1
cd /opt/libs/man
sudo mkdir man1

問題3:./libtool --mode=install /usr/bin/install -c cjpeg /opt/libs/bin/cjpeg
/usr/bin/install -c .libs/cjpeg /opt/libs/bin/cjpeg
/usr/bin/install: cannot create regular file `/opt/libs/bin/cjpeg': No such file or directory
make: *** [install] 錯誤 1
解決方法:

共享目錄下, 依次建立資料夾 bin   lib   include  jpeg6 重新執行 即可。 

4 交叉編譯minigui
  1 #!/bin/sh
  2 ./configure  CC=/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc-4.4.3 \
  3     --build=i386-linux \
  4     --host=arm-linux  \
  5     --target=arm-linux \
  6     --disable-galqvfb \
  7     --disable-galecoslcd \
  8     --disable-vbfsupport \
  9     --prefix=/opt/libs --enable-shared
 10 make
 11 sudo make install
出現問題
/usr/include/features.h:323:26: error: bits/predefs.h: No such file or directory
解決:
sudo apt-get install gcc-multilib

出現問題:
/usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h: No such file or directory
解決:sudo cp /usr/include/i386-linux-gnu/gnu/stubs-32.h   /usr/include/gnu

問題3:
../libtool: 行 4763: arm-linux-ranlib: 未找到命令

分析:arm交叉編譯器的目錄我已經放到PATH中,用echo $PATH可以檢視
      執行make install時加了sudo,變成root的工作環境和root許可權
      所以make install 是root下做的,而arm-linux-ranlib是在其他使用者的工作環境下才能找到,所以產生上面問題;
解決:將sudo chmod 777 /opt/libs

      將指令碼的sudo make install 中的sudo去掉

5 向開發板移植
  sudo cp -rf /opt/libs   /home/xxx/nfsboot (nfs目錄)
  在開發板上掛載共享目錄
  mount -t nfs  本機IP:/home/xxx/nfsboot /mnt -o nolock
  cp /mnt/libs/include   /usr
  cp /mnt/libs/lib/lib*.so   /usr/lib
  cp /mnt/libs/etc           /usr/local/
  mkdir  /usr/local/lib
  cp -rf /mnt/minigui        /usr/local/lib