Arch Linux使用make编译时报c++不识别‘-target’命令行选项错误
问题根因
-target是LLVM/Clang专属的编译参数,GCC不支持该参数。你当前Arch环境中调用的/usr/bin/c++实际是软链接到GCC的g编译器,因此会报参数不识别错误。之前Fedora环境能正常编译,是因为你在Fedora的CMake配置中指定了使用Clang作为C编译器,迁移到Arch后未做对应配置。
解决方案
- 方案一:指定Clang作为编译器(兼容性最高,无需修改现有编译配置)
清空当前build目录后,重新执行CMake配置时追加编译器指定参数:
配置完成后正常执行cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ ..make即可完成编译。 - 方案二:使用GCC交叉编译链编译(适合需要用GCC编译裸机/内核程序的场景)
- 先安装对应架构的交叉编译工具包:
sudo pacman -S x86_64-none-elf-gcc x86_64-none-elf-binutils- 清空build目录,重新配置CMake指定交叉编译器:
cmake -DCMAKE_C_COMPILER=x86_64-none-elf-gcc -DCMAKE_CXX_COMPILER=x86_64-none-elf-g++ ..- 修改项目CMakeLists.txt,删除
-target x86_64-none-elf编译参数,GCC交叉编译器默认目标为x86_64-none-elf,无需额外指定。
内容的提问来源于stack exchange,提问作者user16903287
相关产品推荐
相关产品推荐

