为什么stdlib需要链接程序?
发布时间:2020-12-16 07:16:43 所属栏目:百科 来源:网络整理
导读:参见英文答案 What is the use of _start() in C?????????????????????????????????????3个 采取以下C程序: int main(){} 它没有使用C标准库中的任何内容. 我假设我们可以通过-nostdlib禁用链接. 但是,这会导致以下错误: $gcc -nostdlib -o main main.c/us
参见英文答案 >
What is the use of _start() in C?????????????????????????????????????3个
采取以下C程序: int main(){} 它没有使用C标准库中的任何内容. 但是,这会导致以下错误: $gcc -nostdlib -o main main.c /usr/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000000000400150 有人可以澄清_start符号是什么以及谁负责提供它? 根据文档,我也尝试过: $gcc -nostdlib -o main main.c -lgcc clang也有同样的行为. 解决方法
_start是程序的入口点,参见
this answer. libc包含一个小存根,它读取操作系统放置它们的位置之外的命令行参数,然后调用main.因此,需要链接libc以便在普通平台上运行正常的C程序.
您可以尝试编写没有libc的程序,但是您必须提供自己的_start.你做不了多少,你甚至无法回归,因为你什么都没回来.您唯一的选择是使用程序集精心重新创建所需的libc部分,例如_exit函数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |