我的老师在讲座中告诉我们,可以将 -o 标志放在任何地方,例如:
g++ -o a a.cpp
和g++ a.cpp -o a
都很好,它们都将a.cpp
编译成可执行文件a
。
但是,当我在我的一个项目中尝试:
g++ -Wall –o blackjack blackjack.cpp card.cpp deck.cpp hand.cpp player.cpp rand.cpp
时,我收到以下错误消息:
/usr/bin/ld: cannot find –o: No such file or directory
/usr/bin/ld: cannot find blackjack: No such file or directory
collect2: error: ld returned 1 exit status
当我尝试
g++ -Wall blackjack.cpp card.cpp deck.cpp hand.cpp player.cpp rand.cpp -o blackjack
时,它成功编译了。
我第一次做错了什么吗?
您能提供您的环境的具体情况吗?它看起来像一个 UNIX 系统,但是是哪一个呢? g++ 哪个版本?
我在 Ubuntu 22.04.3 上使用 g++ 11.4.0。我尝试了一个小示例程序,没有遇到任何问题:
g++ -Wall -o main check-prime.cpp main.cpp
如果您使用的是 Makefile 或其他项目控制文件,您可能需要检查它是否有非打印字符,例如使用。
cat -vet theFileName
。例如:如果您从 Microsoft 环境导入,您可能在某处嵌入了 --克洛德