CMake链接失败
CMake fails in linking
我有一个CMakeLists.txt
用于我的C++
项目,它在Windows上使用MSVC
完美工作,在Linux上使用gcc
。我也试图使用相同的文件在Windows上交叉编译Linux。
我使用Eclipse CDT4 - Unix Makefiles
作为生成器在Eclipse中创建make文件项目。为了使用交叉编译器,我创建了以下工具链文件
set(CMAKE_SYSTEM_NAME Linux)
set(TOOL_CHAIN_ROOT "C:/mgc/embedded/codebench")
# specify the cross compiler
set(CMAKE_C_COMPILER ${TOOL_CHAIN_ROOT}/bin/x86_64-amd-linux-gnu-gcc.exe)
set(CMAKE_CXX_COMPILER ${TOOL_CHAIN_ROOT}/bin/x86_64-amd-linux-gnu-g++.exe)
set(_ECLIPSE_VERSION "4.5")
,这就是我如何生成项目文件
cmake -G"Eclipse CDT4 - Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=../Source/cross-tool.cmake ../Source`
我在这里没有任何问题。我甚至可以用
编译源文件cmake --build .
项目开始编译,但在最后,当它试图链接时,它失败了,出现以下错误:
[100%] Linking CXX executable crossProject
x86_64-amd-linux-gnu-g++.exe: error: CMakeFiles/crossProject.dir/Path/To/ObjectFile.cpp.o: No such file or directory
make.exe[2]: *** [crossProject] Error 1
make.exe[1]: *** [CMakeFiles/crossProject.dir/all] Error 2
make.exe: *** [all] Error 2
但是当我检查CMakeFiles/crossProject.dir
时,我可以看到它抱怨找不到的对象文件。就在那儿。
我已经使用这个交叉编译器一段时间了,我确信它工作正常。实际上,我正在使用相同的交叉编译器与Eclipse内部构建器构建相同的项目,而没有CMake。所以问题不应该出在交叉编译器本身。
使用x86_64-amd-linux-gnu-g++.exe
而不是x86_64-amd-linux-gnu-ld.exe
链接是正常的吗?
问题在于Windows,而不是编译器或CMake。你可以在这里读到更多关于它的内容,但它的要点是在Windows命令行中有8192个字符的限制。基本上,您不能运行任何超过8192个字符的命令。CMake试图执行的链接命令有11353个字符,这就是它失败的原因。
解决方案是使用不同的shell。正如博客文章中提到的,您可以从sourceforge下载GNU ARM Eclipse构建工具。
一旦下载并安装,只需将make.exe
和sh.exe
从<Installation-Path>/bin
复制到您的工具链所在的任何地方,并像老板一样链接!
我已经尝试过不同的编译器,qnx - gcc - cross gcc
和它的工作完美。
- 链接阶段在Ubuntu上失败,但在MacOS上失败
- Netbeans 10:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- 链接 c++ 动态库一直失败
- 链接器命令失败,macOS 上的退出代码为 1(使用 -v 查看调用)
- CMake 错误:链接器命令失败,退出代码为 1 和 cpp.o 文件
- clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) - 体系结构的未定义符号 x86_64:
- 如何修复 clang: 错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- 如何在 Linux 中构建共享库时使未定义引用的链接器失败
- mapreduce c编程与-fPIC链接失败,如何解决?
- Xcode:链接器命令失败,退出代码为 1(使用 -v 查看调用)[C++]
- 引用构造函数时链接失败
- 通过嵌入式 IWebBrowser2 控件中的链接打开 youtube 搜索失败
- Android NDK.Build命令失败.未定义的引用.clang++:错误:链接器命令失败,退出代码为1
- CMake链接库在Docker映像中失败
- 生成库失败:无法识别文件格式;作为链接器脚本处理
- 错误:链接器命令失败,退出代码为 1(使用 -v 查看调用):在 Macbook 上
- JNI 不满意链接错误: 动态链接库 (DLL) 初始化例程失败
- C++ XCODE ld:找不到体系结构x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -
- Android Studio 链接器命令在包含 Boost 库时失败
- 链接 openGL 库失败,因为它无法打开 libgl.so ...但它就在那里