在S3C2440A开发板上,交叉编译,步骤:
tar xjf freetype-2.4.10.tar.bz2
进入解压的目录
vi docs/INSTALL.CROSS/*查看配置过程*/./configure --host=arm-linuxmake
mkdir tmp/*新建安装文件夹//默认安装在/usr/local/目录下*/
make DESTDIR=$PWD/tmp install$echo$PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.3.2/bin
查找编译出来的库文件和头文件放到哪里?
find -name includefind -name stdio.h/*查找一个简单的头文件*/头文件放到这里/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/includefind -name lib
库文件文件放到这里/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib
把$tmp/usr/local/lib/*复制到 /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib
tmp/usr/local/lib/$ sudo cp * /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib -d -rf
tmp/usr/local/lib/$ cp *so* /work/nfs_root/fs_mini_mdev_new/lib -d
【-d 原来是链接文件,拷贝过去也是链接文件】
把tmp/usr/local/include/* 复制到 /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include
tmp/usr/local/include/$ sudo cp * /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include -rf
cd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include
编译出错:
arm-linux-gcc -o example1 example1.c
ERROR 01:
【error提示:】
/usr/local/arm/4.3.2/bin/../arm-none-linux-gnueabi/libc/usr/include/ft2build.h:56:38: error: freetype/config/ftheader.h: No such file or directory
通过下列命令查看可知:
ls /usr/local/include/freetype2/freetype
ls /usr/local/include/freetype2/freetype/config/ftheader.h
程序运行时在freetype/config/目录下查找ftheader.h。但是,安装后的ftheader.h在freetype2/freetype/config/
ANSWER 01:
【解决方案1】
移动freetype2目录下的freetype到上层目录 mv freetype2/freetype .
编译example1.c
arm-linux-gcc -finput-charset=GBK -o example1 example1.c -lfreetype -lm
【解决方案2】
gcc编译时,用-I选项,指定头文件的目录/usr/local/include/freetype2
-l加库的名字
-lm:m是数学库的意思
gcc -o example1 example1.c -I /usr/local/include/freetype2 -lfreetype -lm
ERROR 02:
交叉编译.c文件,遇到如下问题:
$ arm-linux-gcc -o example1 example1.c
example1.c:108:25: error: converting to execution character set: Invalid or incomplete multibyte or wide character
ANSWER 02:
转换为执行字符集:无效的或不完整的宽字节
编译时,加入 -finput-charset=GBK
arm-linux-gcc -finput-charset=GBK -o example1 example1.c
错误原因:在windows下编写的.c文件,保存的文件默认是GBK,而在linux下保存的文件默认是UTF-8格式的。
【开发板测试】
$ cp example1 /work/nfs_root/fs_mini_mdev_new
/# ./example1 ./simsun.ttc bx
同样一个程序,在PC上可以执行,交叉编译之后,在开发板上也可执行。