下载相关的压缩包:
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去掉
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