C++库的编译
简单介绍C/C+静态库和动态库的编译方法。
静态库
静态库的命名格式:libname.a
即以lib为前缀,.a作为后缀
生成
打包为库的工具为ar
ar -crv libtest.a test.o
#或者
ar -cr libtest.a test.o
使用
g++编译时需要指明路径和名字
g++ main.cpp -L . -l test -o main
#静态库名不需要加前缀和后缀
动态库
linux的动态库的命名格式:libname.so
即以lib为前缀,.so为后缀
动态库生成
使用编译器创建动态库
g++ -f PIC -c test.cpp#为了生成多程序共享的动态库
g++ -shared -o libtest.so test.o#创建链接
#或者合并为一句
g++ -f PIC -shared -o libtest.so test.cpp
动态库使用
具体使用方法与静态库一样
但是需要注意 必须显式指明动态连接库的位置
#查看库的位置
pwd
#编辑ld配置文件
sudo vim /etc/ld.so.conf#在最后一行加入库目录
sudo ldconfig#重建库的位置文件
#使用动态连接库
g++ main.cpp -L . -l test -o main
./main
#如果没有指明库的路径 编译时没有问题但是运行可执行文件会报错