crt1.o:在`_start'函数中: – 在Linux中对'main'的未定义引用

我将从Solaris应用程序移植到Linux

链接的目标文件没有定义main()。 但编译和链接在Solaris中正确完成,并生成可执行文件。 在Linux中,我得到这个错误

/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crt1.o: In function `_start': (.text+0x20): undefined reference to `main' 

我的问题是,我不能包括新的.c / .o文件,因为它是一个巨大的应用程序,并已运行多年。 我怎样才能摆脱这个错误?

代码提取的makefile:

 RPCAPPN = api LINK = cc $(RPCAPPN)_server: $(RPCAPIOBJ) $(LINK) -g $(RPCAPIOBJ) -o $(RPCAPPN)_server $(IDALIBS) $(LIBS) $(ORALIBS) $(COMMONLIB) $(LIBAPI) $(CCLIB) $(THREADLIB) $(DBSERVERLIB) $(ENCLIB) 

Solutions Collecting From Web of "crt1.o:在`_start'函数中: – 在Linux中对'main'的未定义引用"

尝试添加-nostartfiles到你的链接器选项,即

 $(LINK) -nostartfiles -g ... 

从gcc文档 :

 -nostartfiles Do not use the standard system startup files when linking. The standard system libraries are used normally, unless -nostdlib or -nodefaultlibs is used. 

这导致crt1.o不能被链接(默认情况下通常是链接的) – 通常只在你实现自己的_start代码时使用。

共享链接选项必须附加在你遵循的时候

当我试图用boost来建立一个新的测试项目时,我也有类似的结果,结果我错过了一个声明:

 #define BOOST_TEST_MODULE <yourtestName> 

对我而言,在字符串文字中使用原始UTF-8字符时会出现此错误。 ARM7HL,Sailfish操作系统,GNU C ++。