【发布时间】:2018-08-31 15:36:18
【问题描述】:
我正在尝试了解链接和加载的工作原理。我的理解是 Unix 程序“ld”包含链接和加载功能。当 gcc 被调用时,在预处理、编译和组装之后,链接器被调用,它将所有目标文件和 .a 文件链接到一个可执行文件中,以及关于如何“连接”共享库的最少指令(这里的正确术语是什么?) 在运行时。这个链接器是 ld。
在运行时,我的理解是可执行文件被加载到内存中,尽管我不确定如何加载。我的具体问题如下:
1) 共享对象文件是否在编译时被“链接”,或者对于正在发生的事情是否有另一种说法? 2) 在运行时,ld 是否被第二次调用?我如何才能看到我的可执行文件(在 Linux 和 MacOS 上)的证明? 3) 共享对象文件是否在运行时被“链接”,或者在运行时从 LD_LIBRARY_PATH 中的位置读取共享对象时,进程是否有另一个词?
谢谢!
【问题讨论】:
标签: compilation linker