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
#如果没有指明库的路径 编译时没有问题但是运行可执行文件会报错
Lei Yang
Lei Yang
PhD candidate

My research interests include visual speech recognition and semantics segmentation.