ngs*_*nga 7 android cross-compiling freetype2 android-ndk
我正在尝试交叉编译Freetype 2.5.3,所以我可以在我的Android NDK Opengl ES 2项目中使用它,但我不知道该怎么做.我在Windows上使用Cygwin.我已经搜索并阅读了很多关于它的内容,但我仍然需要帮助.
我在cygwin中导出了一些标志:
$ export NDK_TOOLCHAIN=/cygdrive/d/Development/Android/ndk-standalone-15
$ export PATH="$NDK_TOOLCHAIN/bin/:$PATH"
$ export HOST=arm-linux-androideabi
$ export CC=$HOST-gcc
$ export CXX=$HOST-g++
$ export AR=$HOST-ar
$ export LD=$HOST-ld
$ export AS=$HOST-as
$ export NM=$HOST-nm
$ export STRIP=$HOST-strip
$ export RANLIB=$HOST-ranlib
$ export OBJDUMP=$HOST-objdump
$ export CPPFLAGS="--sysroot=$NDK_TOOLCHAIN/sysroot -I$NDK_TOOLCHAIN/sysroot/usr/include -I$NDK_TOOLCHAIN/include"
$ export LDFLAGS="-L$NDK_TOOLCHAIN/sysroot/usr/lib -L$NDK_TOOLCHAIN/lib"
Run Code Online (Sandbox Code Playgroud)
然后我尝试交叉编译freetype:
$ ./configure --with-sysroot=/cygdrive/d/Development/Android/ndk-standalone-15/sysroot --host=$HOST --prefix=/ft2tmp --build=$BUILD --without-zlib --with-png=no
Run Code Online (Sandbox Code Playgroud)
但是我收到了一个错误:
FreeType构建系统 - 自动系统检测
使用以下设置:
平台unix编译器
arm-linux-androideabi-gcc配置目录./builds/unix配置规则./builds/unix/unix.mk如果这与您的系统或设置不符,请从该目录中删除文件`config.mk',然后阅读INSTALL文件以获取帮助.
否则,只需输入
make' again to build the library, ormake refdoc'来构建API引用(后者需要python).cd builds/unix;/bin/sh ./configure'--with-sysroot =/cygdrive/d/Development/Android/ndk-standalone-15/sysroot'' - host = arm-linux-androideabi'' - prefix =/ft2tmp' '--build ='' - without-zlib'' - with-png = no'检查构建系统类型... x86_64-unknown-cygwin检查主机系统类型... arm-unknown-linux-androideabi检查arm-linux-androideabi-gcc ... arm-linux-androideabi-gcc检查C编译器是否正常工作...没有配置:错误:在
/cygdrive/d/Development/tmp/freetype2/builds/unix': configure: error: C compiler cannot create executables Seeconfig.log'中获取更多详细信息build/unix/detect.mk:86:recipe对于目标'setup'失败make:* [setup]错误77
一些config.log文件:
gcc版本4.8(GCC)配置:2925:$?= 0配置:2914:臂-Linux的androideabi-GCC -V>&5臂-Linux的androideabi-gcc.exe:错误:无法识别的命令行选项 '-V' 臂-Linux的androideabi-gcc.exe:致命错误:没有输入文件编译终止.configure:2925:$?= 1配置:2914:臂-Linux的androideabi-GCC -qversion>&5臂-Linux的androideabi-gcc.exe:错误:无法识别的命令行选项 '-qversion' 臂-Linux的androideabi-gcc.exe:致命错误:没有输入文件编译终止.configure:2925:$?= 1 configure:2945:检查C编译器是否正常工作configure:2967:arm-linux-androideabi-gcc --sysroot =/cygdrive/d/Development/Android/ndk-standalone-15 // sysroot -I/cygdrive/d/Development/Android/ndk-standalone-15 // sysroot/usr/include -I/cygdrive/d/Development/Android/ndk-standalone-15 // include -L/cygdrive/d/Development/Android/ndk-standalone -15 // sysroot/usr/lib -L / cygdrive/d/Development/Android/ndk-standalone-15 // lib conftest.c>&5 d:/ development/android/ndk-standalone-15/bin/.. /lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld.exe:错误:无法打开crtbegin_dynamic.o:没有这样的文件或目录d:/开发/机器人/ NDK-独立-15/bin中/../ LIB/GCC /臂-Linux的androideabi/4.8 /../../../../臂-Linux的androideabi/bin中/ ld.exe:错误:无法打开crtend_android.o:没有这样的文件或目录d:/ development/android/ndk-standalone-15/bin /../ lib/gcc/arm-linux-androideabi/4.8 /../ ../../../arm-linux-androideabi/bin/ld.exe:错误:找不到-lc d:/ development/androi d/ndk-standalone-15/bin /../ lib/gcc/arm-linux-androideabi/4.8 /../../../../ arm-linux-androideabi/bin/ld.exe:错误:找不到-ldl collect2.exe:错误:ld返回1退出状态configure:2971:$?= 1 configure:3009:result:no configure:failed
所以我的问题是我该如何正确地做到这一点?
编辑:
我在CPPFLAGS和LDFLAGS上使用了unset,并使用带有--with-sysroot标志的./configure,现在它正常.接下来的问题是,当我使用时
make
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
$ make ./builds/unix/libtool --mode = compile arm-linux-androideabi-gcc -pedantic -ansi -I/cygdrive/d/Development/tmp/freetype2/objs -I./builds/unix -I/cygdrive/d/Development/tmp/freetype2/include -c -Wall -g -O2 -DFT_CONFIG_OPTION_SYSTEM_ZLIB -DFT_CONFIG_CONFIG_H ="" - DFT2_BUILD_LIBRARY -DFT_CONFIG_MODULES_H ="" - o /cygdrive/d/Development/tmp/freetype2/objs/ftsystem.lo /cygdrive/d/Development/tmp/freetype2/src/base/ftsystem.c libtool:compile:arm-linux-androideabi-gcc -pedantic -ansi -I/cygdrive/d/Development/tmp/freetype2/objs -I./builds/unix -I/cygdrive/d/Development/tmp/freetype2/include -c -Wall -g -O2 -DFT_CONFIG_OPTION_SYSTEM_ZLIB"-DFT_CONFIG_CONFIG_H =" - DFT2_BUILD_LIBRARY"-DFT_CONFIG_MODULES_H ="/ cygdrive/d/Development/tmp/freetype2 /src/base/ftsystem.c -fPIC -DPIC -o /cygdrive/d/Development/tmp/freetype2/objs/.libs/ftsystem.o arm-linux-androideabi-gcc.exe:错误:/ cygdrive/d /开发/ tmp/freetype2/src/base/ftsystem.c:没有这样的文件或目录arm-linux-androideabi-gcc.exe:f atal错误:没有输入文件编译终止./cygdrive/d/Development/tmp/freetype2/builds/freetype.mk:207:目标'/cygdrive/d/Development/tmp/freetype2/objs/ftsystem.lo'的配方失败了:* [/ cygdrive/d /开发/ tmp/freetype2/objs/ftsystem.lo]错误1
您必须设置提供freetype2所在位置的Windows样式路径.以下是如何在Windows环境路径中包含用于Android开发的库和文件.你需要为freetype2做同样的事情.
您可能会发现检查这些引用很有用:
您可能会注意到,开发Android应用程序的大多数最佳材料都在Linux上:
如果您对Android开发非常认真,那么考虑将您的开发转移到Linux平台是值得的.
您还应该看一下OpenGL入门,它提供了几个关于如何在Linux,Windows和MacOS 上使用OpenGL的教程.采用温和的一步一步的方法可以更有效地成功提高您的OpenGL开发技能.
| 归档时间: |
|
| 查看次数: |
5627 次 |
| 最近记录: |