相关疑难解决方法(0)

静态库和共享库之间的区别?

静态库和共享库有什么区别?

我使用Eclipse,有几种项目类型,包括静态库和共享库?一个人比另一个人有优势吗?

c c++ shared-libraries static-libraries

533
推荐指数
8
解决办法
22万
查看次数

.so,.la和.a库文件有什么区别?

我知道.so文件是一种动态库(许多线程可以共享这些库,因此不需要在内存中有多个副本).但是.a和之间有什么区别.la?这些都是静态库吗?

如果动态库比静态库有很大的优势,为什么还有很多静态库呢?

我还想知道加载库(两种类型)的基本机制,以及在某个地方使用它时如何调用lib中的一段代码.我应该学习哪一部分内核?我应该知道哪些相关的Linux命令/实用程序才能知道进程是如何运行的?(我现在才知道ld命令)

我什么时候应该尝试构建代码.so.a?哪一个更好?

[mirror@home ins_openvpn]$ ls lib/openvpn/plugins/ -l
total 96
-rw-r--r-- 1 mirror mirror 22892 Sep  2 23:25 openvpn-plugin-auth-pam.a
-rwxr-xr-x 1 mirror mirror   931 Sep  2 23:25 openvpn-plugin-auth-pam.la
-rwxr-xr-x 1 mirror mirror 23621 Sep  2 23:25 openvpn-plugin-auth-pam.so
-rw-r--r-- 1 mirror mirror 17228 Sep  2 23:25 openvpn-plugin-down-root.a
-rwxr-xr-x 1 mirror mirror   932 Sep  2 23:25 openvpn-plugin-down-root.la
-rwxr-xr-x 1 mirror mirror 18805 Sep  2 23:25 openvpn-plugin-down-root.so
Run Code Online (Sandbox Code Playgroud)

linux memory-management shared-libraries ld static-libraries

216
推荐指数
1
解决办法
11万
查看次数

何时在nm中使用--dynamic选项

有时当我在.so文件上执行nm(例如,libstdc ++.so.6)时,它没有说明符号,我需要使用nm --dynamic.但对于其他一些.so文件,我可以看到没有--dynamic的符号.

医生说:

显示动态符号而不是普通符号.这仅对动态对象有意义,例如某些类型的共享库.

但令人困惑的是......共享库的"类型"需要什么 - 动态?这是如何确定的?在编译图书馆期间?我认为所有共享库都是动态的(我的意思是,可以在运行时动态加载),但似乎我的理解不太对.

linux

16
推荐指数
1
解决办法
6170
查看次数