微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

目标代码文件ctr1.o在gcc编译器中做了什么?

obj文件ctr1.o在gcc编译器中做了什么?每当生成可执行文件时,链接器为什么链接这个obj文件

C交叉编译链接extern声明为静态?

错误“不能出现在g ++中的常量expression式中”,而不是gcc中

如何用静态libcurl编译程序?

这个方法好吗?

如何正确设置CMakeLists.txt文件

我认为它包含非常基本的stuf(crt代表C运行时间)就像为您的主要功能等设置argv和argc …这里有一些链接和一些解释

如果你不需要它,因为你正在编写一个小引导程序,例如没有任何libc文件,你可以使用–no-stdlib选项来连接你的程序。 如果你这样做,你也需要编写你自己的链接脚本。

我不确定要理解你的问题,但我想你是指GCC包中的“crt1.o”。

crt是提供访问计算机的基本功能的libc的基本包之一。 它包含像“printf”等方法

这就是为什么它经常被包含在最基本的C应用程序中。

目标文件保存你编译的代码,但本身不可执行。 链接器的工作是将构成一个程序的所有目标文件都加入到一个整体中。 这包括解析目标文件( extern符号)之间的引用,检查是否存在main()入口点(对于C程序)等等。

由于每个源文件(.c或.cpp)编译成一个单独的目标文件,然后由链接器读取,所以对单个C文件的更改意味着只能重新编译,生成一个新的目标文件,然后与现有的对象文件链接一个新的可执行文件。 这使得开发速度更快。

更新:正如在另一个答案中所述,“crt.o”目标文件保存了C代码,它被认为是大多数C程序所需要的。 您可以阅读gcc链接器选项并找到--no-stdlib选项,这将告诉gcc您的特定程序不应该与标准C运行时文件链接

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐