Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CMake生成链接器不支持的Makefile';我不喜欢_C_Gcc_Cmake - Fatal编程技术网

CMake生成链接器不支持的Makefile';我不喜欢

CMake生成链接器不支持的Makefile';我不喜欢,c,gcc,cmake,C,Gcc,Cmake,我正在尝试用CMake使构建系统现代化。当我试图用make编译程序时,我得到了这个输出 $cmake-DCMAKE_TOOLCHAIN_FILE=“../armgcc.cmake”。&&制作 --C编译器标识为GNU9.2.1 --CXX编译器标识为GNU 9.2.1 --检查C编译器是否工作:/usr/bin/arm none eabi gcc --检查C编译器是否正常工作:/usr/bin/arm none eabi gcc——正常工作 --检测C编译器ABI信息 --检测C编译器ABI信息

我正在尝试用CMake使构建系统现代化。当我试图用
make
编译程序时,我得到了这个输出

$cmake-DCMAKE_TOOLCHAIN_FILE=“../armgcc.cmake”。&&制作
--C编译器标识为GNU9.2.1
--CXX编译器标识为GNU 9.2.1
--检查C编译器是否工作:/usr/bin/arm none eabi gcc
--检查C编译器是否正常工作:/usr/bin/arm none eabi gcc——正常工作
--检测C编译器ABI信息
--检测C编译器ABI信息-完成
--检测C编译特性
--检测C编译特性-完成
--检查CXX编译器是否工作:/usr/bin/arm-none-eabi-g++
--检查CXX编译器是否正常工作:/usr/bin/arm-none-eabi-g++--正常工作
--检测CXX编译器ABI信息
--检测CXX编译器ABI信息-完成
--检测CXX编译特性
--检测CXX编译功能-完成
--配置完成
--生成完成
--生成文件已写入:~/cmake\u test/Build
扫描目标testproj的依赖项
[50%]构建C对象CMakeFiles/testproj.dir/main.C.obj
[100%]链接C可执行testproj
arm none eabi gcc:致命错误:/usr/lib/gcc/arm none eabi/9.2.1/./../../../arm none eabi/lib/nosys.specs:尝试将规范“link\u gcc\u sequence”重命名为已定义的规范“nosys\u link\u gcc\u sequence”
编译终止。
make[2]:***[CMakeFiles/testproj.dir/build.make:84:testproj]错误1
make[1]:***[CMakeFiles/Makefile2:76:CMakeFiles/testproj.dir/all]错误2
make:**[Makefile:84:all]错误2
使用
CMakeLists.txt

cmake_minimum_required(VERSION 3.0.0)
project(testproj VERSION 0.1.0)

add_executable(testproj main.c)
armgcc.cmake

set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR arm)

set(CMAKE_C_COMPILER arm-none-eabi-gcc)
set(CMAKE_CXX_COMPILER arm-none-eabi-g++)
set(CMAKE_ASM_COMPILER arm-none-eabi-gcc)

set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --specs=nosys.specs")

什么是
link\u gcc\u sequence
nosys\u link\u gcc\u sequence
,我应该如何构造我的CmakeList以避免重命名它们?

您可以使用
make VERBOSE=1
检查实际传递给链接器的参数。谢谢,使用它,我看到
link.txt
结束调用
--specs=nosys.specs
两次。出于某种原因,从armgcc调用中删除
${CMAKE_EXE_LINKER_FLAGS}
修复了此问题。请自己写一个答案,并进行标记。这样,寻求帮助的其他人将认识到已解决的问题。