sil*_*tor 7 c linker shared-libraries
假设我有
source.o没有函数的对象文件()main.
libmain.so带有函数的共享对象()main.
当链接器动态链接以创建二进制文件时,链接器如何处理入口点source.bin?
每当你有一个动态链接程序时,都会涉及几个"入口点".第一个是动态链接器本身的入口点,例如/lib/ld-linux.so.2(在Linux/x86上)或类似的.动态链接器首先运行,将所有符号名称解析为它们的定义(无论定义是在主程序还是库中),然后将执行传递到主程序二进制文件中的第二个入口点.这不是main"C运行时"(因此crt.o和类似的名称)的一部分,它负责一些预处理main(如C++ ctors,设置指向环境变量的指针,以及构造正确的参数main).此代码与(相当于)结束exit(main(argc, argv));,其将使用重定位(通过动态连接器)两者的地址exit和main.