【发布时间】:2019-11-15 21:03:17
【问题描述】:
我不明白这两种库的区别,很多网站都说是同一个东西,但是在学校我们用两个不同的命令来创建它们
动态库
$ gcc -shared -o libsample.so lib.c
$ gcc -o main main.c -ldl
执行:
$ ./main ./libsample.so
共享库
$ gcc -shared -o libsample.so lib.c
$ gcc -o main main.c -L. -lsample
执行:
$ LD_LIBRARY_PATH=. ./main
有人可以帮我理解这两个“代码”之间的区别吗?
【问题讨论】:
-
您的库是使用完全相同的命令创建的,并且完全相同。区别在于
main.c的两个版本。或许你想看看main.c的代码以便理解。 -
代码之间的区别在于库的链接方式:第一种情况-ldl建议显式加载库,而第二种情况下,链接信息嵌入程序中
-
我认为你需要寻找其他两种类型的库之间的区别,静态和共享,这里stackoverflow.com/questions/2649334/…
标签: c shared-libraries dynamic-library