freetype提供了完整的automake机制,之前并没有考虑使用它。今天试了一下,没问题,完全可以使用automake编译在S+core平台下工作的freetype出来。方法如下:
configure虽然提供了--host来提供交叉编译的方法,但是score-elf-gcc不能直接通过configure的测试,原因如下:
score-elf-gcc虽然是标准的gcc,但是它自身有如下特性:
· 默认并非小端数据格式
· 默认并非S+core7 CPU
· 默认使用的C库是newlib,这个C库的特点是,如果需要链接可执行程序,用户需要提供一个libgloss.c
虽然我们编译freetype只是需要得到一个library,看起来好像不需要gcc做链接,但是configure在测试gcc的过程中,需要验证gcc是否可以正常产生可执行文件,而针对此,默认的score-elf-gcc肯定是无法通过测试的。
所以,首先需要对score-elf-toolchain做如下处理:
在IDE中找到libgloss.c文件,并编译:
score-elf-gcc -c -mel -mscore7 libgloss.c
将得到一个libgloss.o,然后将其制作成一个.a的静态库:
score-elf-ar q libgloss.a libgloss.o
然后,将libgloss.a安装到score-elf-toolchain中:
cp libgloss.a /usr/local/score/4.2.1/score-elf/lib/mel/
接着,设置CFLAGS和LDFLAGS两个环境变量,让score-elf-gcc的默认参数符合SPCE3200:
export CFLAGS='-O2 -mel -mscore7'
export LDFLAGS='-mel -mscore7 -lm -lc -lgcc -lgloss'
至此,准备工作已经就绪,接下来就可以编译freetype了:
./configure --host=score-elf --without-zlib --prefix=$PWD/_install
make
make install
在_install目录中,找到lib下的libfretype.a即可!