我正在使用CMake构建Android项目。 “android.toolchain.cmake”工具链用于构建项目。
所有环境变量都按照android cmake的用法部分所述进行设置。 以下选项变量设置为环境变量 ANDTOOLCHAIN 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-compare -Wsequence-point -Wunused-but-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,现在-shared -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_ toolchain_dir / android-toolchain / bin / 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-android
-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-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文件中的所有文件都指向正确的目录/路径,并且任何文件路径都没有问题。在link.txt文件中,而不是使用编译器的实际路径,它使用CMAKE_C_COMPILER。我认为这是创建问题,因为“make”命令无法找到编译器的实际路径。
非常感谢您解决此问题的任何帮助。
答案 0 :(得分:5)
我最近遇到了同样的问题,并且无法弄清楚为什么它无法用正确的路径替换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。希望这会有所帮助。