如果我使用gcc编译程序,并尝试从bash shell执行该程序,那么bash执行该程序的确切顺序是什么?
我知道fork()
,execve()
,loader
,dynamic linker
(和其他东西)都参与,但也有人给的步骤的确切顺序和一些适合阅读的参考?
编辑:
从答案看,这个问题似乎暗示了许多可能性。我想缩小到一个简单的情况:
(test.c只是打印hello world)
$ gcc test.c -o test
$ ./test
在上述情况(./test
)中将采取哪些步骤,特别是将bash启动程序与某个子进程相关联,进行加载,链接等?