c++: error: unrecognized command-line option ‘-target’

c++: error: unrecognized command-line option ‘-target’

我正在编译我使用 make 编写的程序,但出现此错误

c++: error: unrecognized command-line option ‘-target’
make[3]: *** [libs/system/CMakeFiles/system.dir/build.make:76: libs/system/CMakeFiles/system.dir/src/system/syscalls.cpp.o] Error 1
make[2]: *** [CMakeFiles/Makefile2:504: libs/system/CMakeFiles/system.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:243: CMakeFiles/image-uefi.dir/rule] Error 2
make: *** [Makefile:137: image-uefi] Error 2

Im 运行 Arch Linux 安装了 Clang-13、CMake 和所有 base-devel。

任何帮助将不胜感激,请不要居高临下 我刚刚安装了 Arch Linux 并收到此错误,在 Fedora 中编译完全相同的应用程序没有错误。

造成错误的行是这一行,它应该是有问题的 linux 因为有问题的错误(第一行)抱怨 -target 无法识别。

cd /home/user/toy-kernel/build/libs/system && /usr/bin/c++ -I/home/user/toy-kernel/libs/system/src -target x86_64-none-elf -mcmodel=kernel -fno-exceptions -fno-use-cxa-atexit -fno-rtti -nostdlib -ffreestanding -fno-threadsafe-statics -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-sse4.1 -mno-sse4.2 -mno-sse4a -mno-3dnow -mno-3dnowa -std=gnu++20 -MD -MT libs/system/CMakeFiles/system.dir/src/system/syscalls.cpp.o -MF CMakeFiles/system.dir/src/system/syscalls.cpp.o.d -o CMakeFiles/system.dir/src/system/syscalls.cpp.o -c /home/user/toy-kernel/libs/system/src/system/syscalls.cpp

在我的例子中,c++ 是 g++ 编译器而不是 clang 编译器,如果您有类似的问题,请尝试更新 g++ 或 clang++(在较旧的 macs 上,您可能需要使用 brew 来安装这些)或进入你的 /usr/bin 目录(对于 mac 和 linux,我从未使用过 windows 不能帮助你)并替换文件(尽管只有在你这样做时才这样做绝对知道你在做什么!)。