配置错误:在为Android配置时,C编译器无法创建可执行文件。

4

我已经下载了CPP Unit Test框架并尝试为Android编译。但是,我遇到了配置问题。我尝试制作独立工具链,也尝试过配置,但一直失败。

sh-4.1$ ./configure CXX=arm-linux-androideabi-g++ CC=arm-linux-androideabi-gcc CPP=arm-linux-androideabi-g++ CXXCPP=arm-linux-androideabi-g++
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make sets $(MAKE)... (cached) yes
checking for a BSD-compatible install... /usr/bin/install -c
checking for gcc... arm-linux-androideabi-gcc
checking for C compiler default output file name...
configure: error: C compiler cannot create executables
See `config.log' for more details.
sh-4.1$ arm-linux-androideabi-g++
arm-linux-androideabi-g++.exe: fatal error: no input files
compilation terminated.
sh-4.1$

我的构建环境是NDKr8,Cygwin和Windows7-x64。

我尝试通过config.log查找错误,发现错误是

arm-linux-androideabi-gcc.exe: error: CreateProcess: No such file or directory

我试图通过缩短路径长度等方法来修复上述错误。但仍然无法解决。如果有人解决了类似的问题,请告诉我。

只是补充一下来自http://curl.haxx.se/mail/lib-2012-08/0184.html的信息,但在没有Cygwin的情况下也遇到了同样的问题。

D:\Test>arm-linux-androideabi-gcc Main.c
arm-linux-androideabi-gcc: error: CreateProcess: No such file or directory

D:\Test>

即使在Windows提示符中,也存在相同的问题。

----- 编辑1 ----- 我尝试在Ubuntu 12.04操作系统上使用以下命令进行配置

./configure --host=arm CXX=arm-linux-androideabi-g++ CC=arm-linux-androideabi-gcc CPP=arm-linux-androideabi-g++ CXXCPP=arm-linux-androideabi-g++

但是出现了这些错误。
checking how to run the C preprocessor... arm-linux-androideabi-g++
configure: error: in `/mnt/hgfs/VMShare/gperftools-2.0_Android/gperftools-2.0':
configure: error: C preprocessor "arm-linux-androideabi-g++" fails sanity check
See `config.log' for more details.

但是大多数情况下,ARM Android Gcc编译器都会失败。
configure:4216: arm-linux-androideabi-gcc -qversion >&5
arm-linux-androideabi-gcc: error: unrecognized option '-qversion'
arm-linux-androideabi-gcc: fatal error: no input files

2
请查看“config.log”以获取更多详细信息。那是你应该查看的日志文件。 - Mat
@Mat:我只是在查看config.log文件而已,这只是一个打字错误 : )。谢谢,我已经更改为上面消息中的Config.log了。 - Suman
1
从技术上讲,**./configure** 脚本是正确的:您的交叉编译器无法创建可在 Windows(或桌面 Linux)上运行的可执行文件。有时,**./configure** 可以被“配置”为理解您正在使用交叉编译器,并且不打算在执行构建的环境中启动二进制文件。但我不确定单元测试框架是否可以在这种情况下使用。为了分析特定情况,如果您发布您正在尝试构建的项目(URL、版本等),那将会很有帮助。 - Alex Cohn
2个回答

2

提供正确的路径和环境。

示例设置:

export NDK=/develop/android/android-ndk-r9b
export SYSROOT=$NDK/platforms/android-18/arch-x86
export CC="$NDK/toolchains/x86-4.7/prebuilt/linux-x86/bin/i686-linux-android-gcc  --sysroot=$SYSROOT"

export CFLAGS="--sysroot=$SYSROOT  "
export LDFLAGS="--sysroot=$SYSROOT  "

0

我对你的特定设置没有经验,但是当我遇到这个错误时,我通过将gcc的bin文件夹添加到系统路径中来解决它。此外,在gcc的bin目录中还必须有每个可执行文件的一个无前缀版本(例如g++.exe,ld.exe...)。这对我解决了问题。在更改路径后,我还注销/登录了一次,但不知道是否必要。

我在这里得到了这个想法: http://forums.codeblocks.org/index.php?topic=18100.0


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接