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

CMake (Android Toolchain) - Error running link command: No such file or directory

本文关键字:文件 出错 工具 Android 命令 链接 运行 CMake      更新时间:2023-10-16

我正在使用CMake来构建Android项目。"android.toolchain.cmake"工具链用于构建项目。

所有的环境变量都是按照android cmake的使用部分所述进行设置的。以下选项变量设置为环境变量和工具链ANDROID_STANDALONE_TOOLCHAINANDROID_ABIANDROID_NAMETIVE_APIANDROID_STLCC和CXX指向androidabi gcc&androidabi-g++分别

CMAKE成功地生成了Make文件,但当我"制作"项目时,它抛出了"运行链接命令时出错:没有这样的文件或目录"。

link.txt的详细信息如下

*cd/Extra/svnroot/2014Project/build/project123&amp//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-带符号的char-无规范前缀-march=armv7-a-mfloat abi=softfp-mfpu=vfpv3-d16-fdata sections-ffunction sections-Wa,--noexecstack-Wno缺少字段初始值设定项-Wno严格别名-Wno已弃用-Wno未使用-Wno尚未使用的变量-Wsign compare-Wsequence point-Wunused但设置变量-Wall-Wextra-Wno没有使用的参数-fno严格别名-pthread-Wl,--fix-cortex-a8-Wl、--no未定义的-Wl、-allow shlib未定义的-Wl、--gc部分-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.oCMakeFiles/project123_Sources.dir/SystemInfo.cpp.o CMakeFiles/project123_Sources.dir/ServiceControl.cpp.o CMakeFiles/project123_Sources.dir/Rapper.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.111
-L/path_to_thirdparty_lib/browst_1_53_0/lib安卓
-L/path_to_thirdparty_lib/curl-7.26.0-patch/lib-L/path_to_thirdparty_lib/fips-opensl-1.0.1g/lib/path_to_third party_lib/boost_1_53_0/lib android/libboost_date_time-gcc-mt-1_53.a/path_to_thirdparty_lib/browst_1_53_0/lib-android/libboost_filesystem-gcc-mt-1_53.a/path_to_thirdparty_lib/browst_1_53_0/lib-android/libboostrongystem-gcc-mt-1_53.a/path_to_thirdparty_lib/boost_1_53_0/lib android/libboost_thread-gcc-mt-1_53.a/路径_to_第三方_lib/boost_1_53_0/lib android/libboost_program_options-gcc-mt-1_53.a/路径_to_第三方_lib/boost_1_53_0/lib android/libboostrongerialization-gcc-mt-1_53.a/path_to_thirdparty_lib/curl-7.26.0-patch/lib/libcurl.a/path_to_thirdparty_lib/fips-opensl-1.0.1g/lib/libssl.a/path_to_thirdparty_lib/fips-opensl-1.0.1g/lib/libcrypto.a/path_to_thirdparty_lib/zlib-1.2.7/lib/libz.a/path_to_thirdparty_lib/libzip-0.11/libzip.a-ldl-lrt"/path_to_toolchain_dir/androidtoolchain/arm linux androidabi/lib/armv7-a/thumb/libstdc++.a"/path_to_toolchain_dir/android toolchain/arm linux androidabi/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> ...")

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。希望这能有所帮助。