2014-09-30 38 views
2

我正在使用CMake构建Android项目。 “android.toolchain.cmake”工具链用于构建项目。CMake(Android工具链) - 运行链接命令时出错:没有这样的文件或目录

所有环境变量都按照android cmake的使用部分中所述进行设置。 以下可选变量设置为环境变量 ANDTOOLCHAIN ANDROID_STANDALONE_TOOLCHAIN ANDROID_ABI ANDROID_NATIVE_API ANDROID_STL CC和CXX指向androideabi-GCC &分别androideabi-G ++

CMake的成功产生了制作文件,但是当我“使“项目抛出”运行链接命令错误:没有这样的文件或目录“。

的link.txt的具体情况下

* CD /特/ svnroot/2014_Project /编译/ 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桌-finline限制= 64 -fsigned炭-no规范前缀-march = armv7 -a -mfloat-abi = softfp -mfpu = vfpv3-d16 -fdata-sections -ffunction-sections -Wa, - noexecstack -Wno-missing-field-start lifier -Wno-strict-aliasing -Wno-deprecated -Wno-unused -Wno -unused-variable -Wsign-compare -Wsequence-point -Wunused-set-variable -Wall -Wextra -Wno-unused-parameter -fno- strict-aliasing -pthread -Wl, - fix-cortex-a8 -Wl, - no-undefined -Wl,-allow-shlib-undefined -Wl,-gc-sections -fuse-ld = gold -Wl, - z,noexecstack -Wl,-z,relro -Wl,-z,现在共享-Wl,-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_ to olchain_dir/Android的工具链/斌/ armeabi-V7A -L /特/ svnroot/2014_Q4_Mobile /建造
-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-机器人
-L/path_to_thirdparty_lib /卷曲7.26.0的贴剂/ lib中 -L/path_to_thirdparty_lib /fips-openssl-1.0.1g/lib/path_to_thirdparty_lib /boost_1_53_0/LIB-机器人/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-机器人/ 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/android-toolchain/arm-linux-androideabi/lib/armv7-a/thumb/libsupc++.a"*

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

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

回答

5

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

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。希望这可以帮助。

+1

谢谢!你拯救了这一天:) – Duke 2016-04-25 12:37:52

相关问题