gpt4 book ai didi

c - 部分链接到 C 中的动态链接

转载 作者:太空宇宙 更新时间:2023-11-03 23:38:22 27 4
gpt4 key购买 nike

我仍在努力理解动态链接和静态链接之间的核心区别,下面是我教科书中的图片和示例代码:

/* main2.c */
#include <stdio.h>
#include "vector.h"

int x[2] = {1, 2};
int y[2] = {3, 4};
int z[2];

int main()
{
addvec(x, y, z, 2);
printf("z = [%d %d]\n", z[0], z[1]);
return 0;
}

和 libvector.so 只是一个提供 main2.c 所需定义的 DLL

enter image description here

所以我的问题是:

为什么 p2 是“部分链接的可执行目标文件”?既然叫“部分链接”,那肯定是做了一些静态链接。但是由于此时 libvector.so 或 libc.so 中的代码或数据部分都没有实际复制到可执行文件 p2 中。那么为什么 p2 仍然是“部分链接”的呢?静态链接不是从目标文件中复制代码和数据段吗,如果没有复制,那么就没有涉及静态链接?

最佳答案

部分链接的可执行文件会将 所有 .o 目标文件(这里只有 main.o)链接在一起,并且可能链接 stub 、重定位表等以促进动态链接。动态链接器在运行程序之前只执行剩余的“n %”。

关于c - 部分链接到 C 中的动态链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53202594/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com