加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – CMake无法链接

发布时间:2020-12-16 06:52:22 所属栏目:百科 来源:网络整理
导读:我的C项目有一个CMakeLists.txt,可以在 Windows上使用MSVC,在 Linux上使用gcc.我也试图在Windows for Linux上使用相同的文件进行交叉编译. 我使用Eclipse CDT4 – Unix Makefiles作为生成器在Eclipse中创建一个make文件项目.为了使用交叉编译器,我创建了以下
我的C项目有一个CMakeLists.txt,可以在 Windows上使用MSVC,在 Linux上使用gcc.我也试图在Windows for 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时,我可以看到它抱怨它无法找到的目标文件.它就在那里.

我一直在使用这个交叉编译器,我确信它正常工作.我实际上是在没有CMake的情况下使用Eclipse内部构建器使用相同的交叉编译器构建相同的项目.所以问题不应该在交叉编译器本身.

这是正常的,它使用x86_64-amd-linux-gnu-g .exe链接而不是x86_64-amd-linux-gnu-ld.exe?

解决方法

问题是Windows,而不是编译器和CMake.您可以阅读有关它的更多信息 here,但它的要点是Windows命令行中有8192个字符限制.基本上你不能运行超过8192个字符的任何命令. CMake尝试执行的链接命令有11353个字符,这就是它失败的原因.

解决方案是使用不同的shell.如博客文章中所述,您可以从sourceforge下载GNU ARM Eclipse构建工具.

下载并安装后,只需将make.exe和sh.exe从< Installation-Path> / bin复制到工具链的任何地方,并像老板一样链接!

我尝试过不同的编译器,qnx – gcc – 交叉gcc,它完美无缺.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读