C++编译出现undefined reference to `main'错误,请求排查原因
解决"undefined reference to `main'"的编译错误
嘿,我一眼就看到问题出在你的链接命令上了!先看你执行的第二条命令:
g++ -WALL -o main.o fraction.o
这里的核心错误是对-o选项的用法搞错了:-o后面应该指定最终生成的可执行文件名称,而不是目标文件。你现在的命令相当于让编译器只把fraction.o单独打包成一个叫main.o的程序,但fraction.o里只有分数类的实现,根本没有main()函数(这个函数在你已经编译好的main.o里),链接器找不到程序的入口点,自然就报了undefined reference to main的错误。
正确的操作步骤
你第一步的编译命令是对的:
g++ -c main.cpp fraction.cpp
这行命令已经把两个源文件分别编译成了main.o和fraction.o两个目标文件。接下来只需要把它们链接起来生成可执行文件,正确的链接命令应该是:
g++ -Wall main.o fraction.o -o main
或者你也可以把编译和链接合并成一条命令,更简单:
g++ -Wall main.cpp fraction.cpp -o main
小细节提醒
- 注意警告选项的拼写:是
-Wall(小写的L),不是-WALL,大写的话编译器可能会提示未知选项哦。 - 既然你确认教授提供的
main.cpp没问题,那修正命令后应该就能顺利编译运行了。
内容的提问来源于stack exchange,提问作者SteakPizza99
相关产品推荐
相关产品推荐

