CMake(Android工具链) – 运行链接命令错误:没有这样的文件或目录

我正在使用CMake来构buildAndroid项目。 “android.toolchain.cmake”工具链用于构build项目。

所有的环境variables都是按照android cmake的使用部分所描述的来设置的。 以下选项variables设置为环境variablesANDTOOLCHAIN ANDROID_STANDALONE_TOOLCHAIN ANDROID_ABI ANDROID_NATIVE_API ANDROID_STL CC和CXX分别指向androideabi-gcc&androideabi-g ++

CMAKE正在成功生成Make文件,但当我“制造”该项目时抛出“错误运行链接命令:没有这样的文件或目录”。

link.txt的细节如下

* cd / Extra / svnroot / 2014_Project / build / project123 && / usr / bin / cmake -E cmake_link_script CMakeFiles / project123dir / link.txt –verbose = 1

CMAKE_C_COMPILER -fPIC -Wno-psabi –sysroot = / path_to_sysroot_dir / sysroot -fpic -funwind-tables -finline-limit = 64 -fsigned-char -no-canonical-prefixes -march = armv7 -a -mfloat-abi = softfp – mfpu = vfpv3-d16 -fdata-sections -ffunction-sections -Wa, – noexecstack -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-deprecated -Wno-unused -Wno-unused-variable -Wsign-比较-Wsequence-point -Wunused-but-set-variable -Wall -Wextra -Wno -unused-parameter -fno-strict-aliasing -pthread -Wl, – fix-cortex-a8 -Wl, – no-undefined – W1,-allow-shlib-undefined -W1,-gc-sections -fuse-ld = gold -W1,-z,noexecstack -W1,-z,relro -W1,-z,现在共享-W1,-soname ,libproject123.so -o ../libproject123.so CMakeFiles / project123_Sources.dir / MyAdapter.cpp.o CMakeFiles / project123_Sources.dir /SystemInfo.cpp.o CMakeFiles / project123_Sources.dir /ServiceControl.cpp.o CMakeFiles / project123_Sources.dir /Wrapper.cpp.o CMakeFiles / project123_Sources.dir /Service.cpp.o CMakeFiles / project123_Sources.dir /MemMap.cpp.o CMakeFiles / project123_Sources.dir.dir / Trace.cpp.o -L / path_to_ toolchain_dir / android-toolchain / bin / armeabi-v7a -L / Extra / svnroot / 2014_Q4_Mobile / build
-L / path_to_thirdparty_lib / zlib的-1.2.7 / lib中
-L / path_to_thirdparty_lib /libzip-0.11.1
-L / path_to_thirdparty_lib / boost_1_53_0 / lib-android
-L / path_to_thirdparty_lib / curl-7.26.0-patch / lib -L ​​/ path_to_thirdparty_lib /fips-openssl-1.0.1g/lib/path_to_thirdparty_lib /boost_1_53_0/lib-android/libboost_date_time-gcc-mt-1_53.a / path_to_thirdparty_lib / boost_1_53_0 /lib-android/libboost_filesystem-gcc-mt-1_53.a /path_to_thirdparty_lib/boost_1_53_0/lib-android/libboost_system-gcc-mt-1_53.a / path_to_thirdparty_lib /boost_1_53_0/lib-android/libboost_thread-gcc-mt-1_53.a / path_to_thirdparty_lib /boost_1_53_0/lib-android/libboost_program_options-gcc-mt-1_53.a / path_to_thirdparty_lib /boost_1_53_0/lib-android/libboost_serialization-gcc-mt-1_53.a / path_to_thirdparty_lib /curl-7.26.0-patch/lib/libcurl .a / path_to_thirdparty_lib /fips-openssl-1.0.1g/lib/libssl.a / path_to_thirdparty_lib /fips-openssl-1.0.1g/lib/libcrypto.a / path_to_thirdparty_lib /zlib-1.2.7/lib/libz.a / path_to_thirdparty_lib /libzip-0.11.1/libzip.a -ldl -lrt“/path_to_toolchain_dir/android-toolchain/arm-linux-androideabi/lib/armv7-a/thumb/libstdc++.a”“/ path_to_toolchain_dir / 机器人工具链/臂-Linux的androideabi / LIB / ARMv7的-A /拇指/ libsupc ++。一个“*

link.txt文件中的所有文件都指向正确的目录/path,任何文件path都没有问题。 在link.txt文件中,而不是使用编译器的实际path,而是使用CMAKE_C_COMPILER。 我认为这是造成这个问题,因为“make”命令无法find编译器的实际path。

任何帮助解决这个问题将不胜感激。

我最近遇到了同样的问题,不知道为什么它没有用正确的路径替换CMAKE_C_COMPILER。 所以我最终做的是修改android.toolchain.cmake ,其中CMAKE_CXX_CREATE_YYY被设置。 从

set( CMAKE_CXX_CREATE_SHARED_LIBRARY "<CMAKE_C_COMPILER> ...") set( CMAKE_CXX_CREATE_SHARED_MODULE "<CMAKE_C_COMPILER> ...") set( CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_C_COMPILER> ...") 

 set( CMAKE_CXX_CREATE_SHARED_LIBRARY "<CMAKE_CXX_COMPILER> ...") set( CMAKE_CXX_CREATE_SHARED_MODULE "<CMAKE_CXX_COMPILER> ...") set( CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_CXX_COMPILER> ...") 

而且CMake能够生成正确的link.txt。 希望这可以帮助。