got*_*ham 2 c++ linux android cmake toolchain
我正在使用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,now -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/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-机器人
-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_thi rdparty_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"命令无法找到编译器的实际路径.
任何帮助解决这个问题将不胜感激.
我最近遇到了同样的问题,并且无法弄清楚为什么它无法用正确的路径替换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> ...")
Run Code Online (Sandbox Code Playgroud)
至
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> ...")
Run Code Online (Sandbox Code Playgroud)
并且CMake能够生成正确的link.txt.希望这可以帮助.