静态库的创建和使用:
- g++ add.cpp生成add.o目标文件
- ar cqs libadd.a add.o
- ar打包目标文件(elf中的relocatable文件)
- 静态库的名字lib[static_library_name].a
- 链接静态库.
- g++ main.c -L . -ladd
- 静态库的链接语法和动态库基本语法一致.
动态库的创建和使用:
- g++ -fPIC -shaerd add.cpp -o libadd.so
- shared library的名字格式:lib[name].so
- 动态库的使用.
- g++ main.c -L . -ladd
- 记得增加链接搜索路径。
- error常见解析:
- cannot find -ladd
- 出现这种错误是因为在编译链接动态库的时候找不到该动态库,即没有指定编译时的搜索路劲
- 解决方案见<动态库的链接>
[root@VM_0_9_centos dynamic_lib_text]# ls
add.c add.h add.o libadd.so main.c
[root@VM_0_9_centos dynamic_lib_text]# g++ main.c
/tmp/ccBAOjnr.o: In function `main':
main.c:(.text+0x13): undefined reference to `add(int, int)'
collect2: error: ld returned 1 exit status
[root@VM_0_9_centos dynamic_lib_text]#
- undefined reference to `add(int, int)'
- 编译时通过 -l指定了动态库,