当前位置: 首页 > 面试题库 >

crt1.o:在函数“ _start”中:-在Linux中未定义对“ main”的引用

裴泰平
2023-03-14
问题内容

我正在将应用程序从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)

问题答案:

尝试添加-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代码时使用。



 类似资料:
  • 问题内容: 我正在使用Linux,并且具有以下文件: 该函数在中声明和定义。我需要在中使用该函数,因此我将该函数声明为 在。 但是,在编译过程中,我得到了错误 怎么了? 谢谢。 预计到达时间:多亏了我收到的答案,我现在有了以下内容: 在fileA.h中,我有 在fileA.c中,我有 在fileB.h中,我有 在fileB.cpp中,我有 但是,我现在有错误 问题答案: 如果您确实是使用C而不是C

  • 但是,我一定遗漏了什么,因为在构建项目时,我得到了一个关于OpenCL函数的未定义引用错误。这是完整的错误:任务“:App:ExternalNativeBuildArm8Debug”执行失败。 你知道我错过了什么吗?在过去的两天里,我搜索了几个小时关于如何在Android Studio中设置OpenCL的问题,但我找到的所有东西似乎都过时了,似乎对我的问题不起作用。

  • 我不知道为什么会这样,但当我有: 错误消失了。 更新这是我的完整html代码:

  • 我终于绝望了。所以,在我的c课上,我们被指示使用类。我们会让头文件声明类和函数,而另一个单独的. cpp文件实现它。事情应该是有效的,但他们没有,网上没有解决方案似乎对我有用。为此,我在linux上使用了G编译器,它似乎在IDE或普通命令行上都无法工作。 我在笔记本上看到的错误。h是这样的: 我有点不喜欢该文件没有接收任何电话类的方法。下面是TBook的代码。h: 这就是TBook.cpp的样子:

  • 我目前正在写一个WoodPress插件,它可以与WooCommerce一起工作。我查询WooCommerce订单,目标是使用来自荷兰route planner服务的API,使用这些订单的地址来规划配送路线。 为我编写PHP已经有一段时间了,我最后一次编写PHP是在7年前,所以我的PHP技能有些生疏。 查询订单后,我想调用函数routexl_generate(),该函数在我的代码中定义。但是,运行此

  • 问题内容: 为什么我在这里未定义状态?我尝试了各种解决方案,但没有一个对我有用。有人可以指出这里做错了什么吗 编辑: 组件的完整代码 当从服务器动态加载侧边栏内容时,也有人可能会建议一个更好的选择 问题答案: 通过使用这种方式,您会失去上下文,而不是您所期望的那样。 在这种情况下,请将箭头功能用作: 或者, 这就是我的建议 ,请移至方法之外: 也可以将其绑定到构造函数中: