为什么stdlib需要链接程序?

为什么stdlib需要链接程序?,第1张

概述参见英文答案 > What is the use of _start() in C?                                    3个 采取以下C程序: int main(){} 它没有使用C标准库中的任何内容. 我假设我们可以通过-nostdlib禁用链接. 但是,这会导致以下错误: $gcc -nostdlib -o main main.c/usr/bin/ld: 参见英文答案 > What is the use of _start() in C?                                    3个
采取以下C程序:

int main(){}

它没有使用C标准库中的任何内容.
我假设我们可以通过-nostdlib禁用链接.

但是,这会导致以下错误:

$gcc -nostdlib -o main main.c/usr/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000000000400150

有人可以澄清_start符号是什么以及谁负责提供它?
如何使用-nostdlib?

根据文档,我也尝试过:

$gcc -nostdlib -o main main.c -lgcc

clang也有同样的行为.

解决方法 _start是程序的入口点,参见 this answer. libc包含一个小存根,它读取 *** 作系统放置它们的位置之外的命令行参数,然后调用main.因此,需要链接libc以便在普通平台上运行正常的C程序.

您可以尝试编写没有libc的程序,但是您必须提供自己的_start.你做不了多少,你甚至无法回归,因为你什么都没回来.您唯一的选择是使用程序集精心重新创建所需的libc部分,例如_exit函数.

总结

以上是内存溢出为你收集整理的为什么stdlib需要链接程序?全部内容,希望文章能够帮你解决为什么stdlib需要链接程序?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1228249.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存