Glib 2.0.0 Android交叉编译遇configure错误求助
解决交叉编译Glib到Android aarch64时的"cannot run test program while cross compiling"错误
交叉编译时configure无法运行目标平台的测试程序,以下是几种可行的解决方式:
1. 直接指定交叉编译参数与预定义测试结果
手动设置交叉编译工具链路径,同时跳过测试或提前提供测试结果,避免configure尝试运行目标程序:
# 先设置交叉编译工具链环境变量 export CC=aarch64-linux-android-clang export CXX=aarch64-linux-android-clang++ export AR=aarch64-linux-android-ar export RANLIB=aarch64-linux-android-ranlib # 替换为你的Android NDK sysroot路径 export SYSROOT=/path/to/android-ndk/sysroot # 运行configure,替换构建主机架构和安装路径 ./configure --host=aarch64-linux-android \ --build=x86_64-linux-gnu \ --prefix=/your/target/install/path \ --disable-tests \ ac_cv_func_mmap_fixed_mapped=yes \ ac_cv_func_memcmp_working=yes \ ac_cv_have_decl_malloc=yes \ ac_cv_func_malloc_0_nonnull=yes \ ac_cv_func_realloc_0_nonnull=yes
--build:指定你的编译主机架构(如x86_64 Linux系统填x86_64-linux-gnu)--disable-tests:跳过测试程序编译,彻底避免运行测试的环节ac_cv_*系列变量:提前告知configure测试结果,跳过实际运行测试
2. 初始化Android NDK交叉编译环境
利用Android NDK自带的环境脚本初始化交叉编译环境,再执行configure:
# 替换为你的NDK路径,初始化arm64架构环境 source /path/to/android-ndk/build/tools/setup-env.sh --arch arm64 # 运行configure ./configure --host=aarch64-linux-android \ --prefix=/your/target/install/path \ --disable-tests
3. 使用预生成的配置缓存文件
如果有同架构下编译过Glib的config.cache文件,将其放到Glib源码目录,configure会直接读取缓存中的测试结果:
./configure --host=aarch64-linux-android --cache-file=config.cache
4. 确保依赖库已完成交叉编译
Glib依赖zlib、libffi、pcre2等库,这些库需要先交叉编译到Android平台,再在configure时指定路径:
./configure --host=aarch64-linux-android \ --prefix=/your/target/install/path \ --disable-tests \ --with-zlib=/path/to/cross-compiled/zlib \ --with-libffi=/path/to/cross-compiled/libffi \ --with-pcre2=/path/to/cross-compiled/pcre2
内容的提问来源于stack exchange,提问作者Arun Kumar
相关产品推荐
相关产品推荐

