<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Crt0</id>
	<title>Crt0 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Crt0"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Crt0&amp;action=history"/>
	<updated>2026-07-20T04:31:08Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Crt0&amp;diff=3233774&amp;oldid=prev</id>
		<title>2025年6月28日 (六) 11:58 imported&gt;重庆轨交18</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Crt0&amp;diff=3233774&amp;oldid=prev"/>
		<updated>2025-06-28T11:58:39Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{noteTA|G1=IT}}&lt;br /&gt;
{{For|线路代码为CRT0的轨道交通线路|重慶軌道交通環線}}&lt;br /&gt;
{{Program execution}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;crt0&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;（也叫做&amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;c0&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;）是[[链接器|连接]]到[[C语言|C]]程序上的一组执行启动例程，它进行在调用这个程序的[[主函数]]之前所需要的任何初始化工作。它一般的都采用叫做&amp;lt;tt&amp;gt;crt0.o&amp;lt;/tt&amp;gt;的[[目标文件]]形式，经常采用[[汇编语言]]编写，[[链接器]]自动的将它包括入它所建造的所有[[可执行文件]]中&amp;lt;ref name=&amp;quot;embecosm&amp;quot;&amp;gt;{{cite web&lt;br /&gt;
 | url = http://www.embecosm.com/appnotes/ean9/html/ch05s02.html&lt;br /&gt;
 | title = The C Runtime Initialization, crt0.o&lt;br /&gt;
 | year = 2010&lt;br /&gt;
 | accessdate = 2013-12-30&lt;br /&gt;
 | website = embecosm.com&lt;br /&gt;
 | archive-date = 2013-12-30&lt;br /&gt;
 | archive-url = https://web.archive.org/web/20131230234426/http://www.embecosm.com/appnotes/ean9/html/ch05s02.html&lt;br /&gt;
 | dead-url = yes&lt;br /&gt;
 }}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
==简介==&lt;br /&gt;
&amp;lt;tt&amp;gt;crt0&amp;lt;/tt&amp;gt;包含大多数[[运行时库]]的基本部分。因此，它进行的确切工作依赖于程序的编译器、操作系统和[[C标准库]]实现&amp;lt;ref name=&amp;quot;embecosm&amp;quot; /&amp;gt;。除了运行时环境和[[工具链]]所需要的初始化工作，&amp;lt;tt&amp;gt;crt&amp;lt;/tt&amp;gt;可以进行编程者定义额外操作，比如执行[[C++]]全局[[构造器]]和携带[[GCC]]的&amp;lt;code&amp;gt;((constructor))&amp;lt;/code&amp;gt;属性的C函数&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
 | url = http://wiki.osdev.org/Creating_a_C_Library#Program_Initialization&lt;br /&gt;
 | title = Program initialization: Creating a C library&lt;br /&gt;
 | date = 2014-02-25&lt;br /&gt;
 | accessdate = 2014-04-21&lt;br /&gt;
 | website = osdev.org&lt;br /&gt;
 | archive-date = 2014-04-23&lt;br /&gt;
 | archive-url = https://web.archive.org/web/20140423065714/http://wiki.osdev.org/Creating_a_C_Library#Program_Initialization&lt;br /&gt;
 | dead-url = yes&lt;br /&gt;
 }}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
 | url = http://wiki.osdev.org/Calling_Global_Constructors&lt;br /&gt;
 | title = Calling Global Constructors&lt;br /&gt;
 | date = 2014-04-08&lt;br /&gt;
 | accessdate = 2014-04-21&lt;br /&gt;
 | website = osdev.org&lt;br /&gt;
 | archive-date = 2014-04-23&lt;br /&gt;
 | archive-url = https://web.archive.org/web/20140423061748/http://wiki.osdev.org/Calling_Global_Constructors&lt;br /&gt;
 | dead-url = yes&lt;br /&gt;
 }}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
“crt”表示“C runtime”，“0”表示“最开始”。然而，当程序使用GCC来编译的时候，它也用于在C之外的语言，对于特殊使用场景可获得&amp;lt;tt&amp;gt;crt0&amp;lt;/tt&amp;gt;的可替代版本，例如，分析器[[gprof]]要求它的程序同&amp;lt;tt&amp;gt;gcrt0&amp;lt;/tt&amp;gt;一起编译&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
 | url = http://sourceware.org/binutils/docs-2.16/gprof/Compiling.html&lt;br /&gt;
 | title = Compiling a Program for Profiling: GNU gprof&lt;br /&gt;
 | accessdate = 2013-12-30&lt;br /&gt;
 | website = sourceware.org&lt;br /&gt;
 | archive-date = 2013-12-31&lt;br /&gt;
 | archive-url = https://web.archive.org/web/20131231083357/http://sourceware.org/binutils/docs-2.16/gprof/Compiling.html&lt;br /&gt;
 | dead-url = yes&lt;br /&gt;
 }}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 样例 crt0.s ==&lt;br /&gt;
下面是针对[[linux]] [[x86_64]]的采用at&amp;amp;t语法的例子。&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
.text&lt;br /&gt;
&lt;br /&gt;
.globl _start&lt;br /&gt;
&lt;br /&gt;
_start: # _start is the entry point known to the linker&lt;br /&gt;
    xor %ebp, %ebp            # effectively RBP := 0, mark the end of stack frames&lt;br /&gt;
    mov (%rsp), %edi          # get argc from the stack (implicitly zero-extended to 64-bit)&lt;br /&gt;
    lea 8(%rsp), %rsi         # take the address of argv from the stack&lt;br /&gt;
    lea 16(%rsp,%rdi,8), %rdx # take the address of envp from the stack&lt;br /&gt;
    xor %eax, %eax            # per ABI and compatibility with icc&lt;br /&gt;
    call main                 # %edi, %rsi, %rdx are the three args (of which first two are C standard) to main&lt;br /&gt;
&lt;br /&gt;
    mov %eax, %edi    # transfer the return of main to the first argument of _exit&lt;br /&gt;
    xor %eax, %eax    # per ABI and compatibility with icc&lt;br /&gt;
    call _exit        # terminate the program&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 参见 ==&lt;br /&gt;
* [[入口点]]&lt;br /&gt;
* [[运行时系统]]&lt;br /&gt;
&lt;br /&gt;
== 引用 ==&lt;br /&gt;
{{Reflist|2}}&lt;br /&gt;
&lt;br /&gt;
== 外部链接 ==&lt;br /&gt;
* [http://lists.uclibc.org/pipermail/uclibc/2002-December/025943.html crt0.o vs crt1.o]{{Wayback|url=http://lists.uclibc.org/pipermail/uclibc/2002-December/025943.html |date=20180525132542 }}&lt;br /&gt;
* [https://dev.gentoo.org/~vapier/crt.txt Mini FAQ about the misc libc/gcc crt files]{{Wayback|url=https://dev.gentoo.org/~vapier/crt.txt |date=20190527141133 }}.&lt;br /&gt;
* [http://dbp-consulting.com/tutorials/debugging/linuxProgramStartup.html Linux x86 program start-up]{{Wayback|url=http://dbp-consulting.com/tutorials/debugging/linuxProgramStartup.html |date=20190601190208 }}&lt;br /&gt;
* [https://blogs.oracle.com/ksplice/entry/hello_from_a_libc_free Hello from a libc-free world! (Part 1)]{{Wayback|url=https://blogs.oracle.com/ksplice/entry/hello_from_a_libc_free |date=20161117201653 }}, March 16, 2010&lt;br /&gt;
&lt;br /&gt;
[[Category:C標準函式庫]]&lt;/div&gt;</summary>
		<author><name>imported&gt;重庆轨交18</name></author>
	</entry>
</feed>