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