簡體   English   中英

交叉編譯Freetype 2.5.3 for Android

[英]Cross-compiling Freetype 2.5.3 for Android

我正在嘗試交叉編譯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"

然后我嘗試交叉編譯freetype:

$ ./configure --with-sysroot=/cygdrive/d/Development/Android/ndk-standalone-15/sysroot --host=$HOST --prefix=/ft2tmp --build=$BUILD --without-zlib --with-png=no

但是我收到了一個錯誤:

FreeType構建系統 - 自動系統檢測

使用以下設置:

平台unix編譯器
arm-linux-androideabi-gcc配置目錄./builds/unix配置規則./builds/unix/unix.mk

如果這與您的系統或設置不符,請從該目錄中刪除文件`config.mk',然后閱讀INSTALL文件以獲取幫助。

否則,只需make' again to build the library, or輸入make' again to build the library, or使用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編譯器是否正常工作......沒有配置:錯誤:in /cygdrive/d/Development/tmp/freetype2/builds/unix': configure: error: C compiler cannot create executables See詳細信息, /cygdrive/d/Development/tmp/freetype2/builds/unix': configure: error: C compiler cannot create executables See config.log'build / unix / detect.mk:86:目標'setup'的配方失敗make: * [setup]錯誤77

一些config.log文件:

gcc版本4.8(GCC)配置:2925:$? = 0 configure:2914:arm-linux-androideabi-gcc -V>&5 arm-linux-androideabi-gcc.exe:錯誤:無法識別的命令行選項'-V'arm-linux-androideabi-gcc.exe:致命錯誤:沒有輸入文件編譯終止。 configure:2925:$? = 1 configure:2914:arm-linux-androideabi-gcc -qversion>&5 arm-linux-androideabi-gcc.exe:錯誤:無法識別的命令行選項'-qversion'arm-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

我收到以下錯誤:

$ 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開發技能。

當用C語言編寫的庫的交叉編譯時,我們需要NDK。 但是在Windows上編譯這種類型的庫非常困難,有時會卡住。 我建議你在Linux上嘗試編譯。 它肯定會被編譯

NDK for Windows不依賴於Cygwin,更糟糕的是:它無法識別/cygdrive/...路徑。 嘗試使用D:/Development/tmp/freetype2

首先,准備一個獨立的NDK工具鏈。 請參閱https://stackoverflow.com/a/24978903/192373 我使用了以下參數:

bash-3.1$ d:/dev/Android/ndk/build/tools/make-standalone-toolchain.sh --platform=android-14 --toolchain=arm-linux-androideabi-4.8 --system=windows-x86_64 --arch=armv7a

接下來,確保您正在使用/usr/bin/gcc

bash-3.1$ ./configure --host=arm-linux-androideabi --prefix=d:/Dev/Android/standalone-toolchain-armv7a-android-17 --without-zlib --with-png=no

最后,我運行make ,我明白了

 Directory of d:\dev\freetype-2.5.3\objs\.libs

27/07/2014  10:43         3,462,596 libfreetype.a
27/07/2014  10:43               960 libfreetype.la
27/07/2014  10:43               961 libfreetype.lai
27/07/2014  10:43         2,320,272 libfreetype.so

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM