分类: 嵌入式
2017-02-06 14:50:56
后缀为*.a,生成的执行文件可以独立于.a文件运行,调用的库函数已经被编译到可执行文件中。
2. 动态库
(1) 后缀为*.so,未被编译到可执行文件中,依赖于库文件才能执行。多个线程可以共享动态链接库代码。
(2) 可通过gcc -shared -fPIC xxx.c -o libxxx.so生成。
(3) Linux提供了一套API来动态装载库。下面列出了这些API:
- dlopen,打开一个库,并为使用该库做些准备。
- dlsym,在打开的库中查找特定符号的对于的地址。
- dlclose,关闭库。
- dlerror,返回一个描述最后一次调用dlopen、dlsym,或dlclose的错误信息的字符串。
C语言用户需要包含头文件dlfcn.h才能使用上述API。
(4) 动态库使用举例(参考http://www.cnblogs.com/Anker/p/3527677.html)