库分为两种:
(1)共享库 Shared Library 
(2)静态库 Static Library
通常共享库也称为动态库。

 

使用g++命令来生成动态库编译,生成.o文件 (编译选项 ‐fPIC )
g++ ‐c ‐fPIC example.cpp ‐o example.o
链接,生成目标 .so文件 ( 链接选项 ‐shared)
g++ ‐shared example.o ‐o libexample.so

(PIC:Position Independent Code位置无关代码)

 

如下源码:

example.h

void print(const int startPos,const int endPos);

example.cpp

#include "example.h"
#include <stdio.h>

void print(const int startPos,const int endPos){
	for(int i=startPos;i<endPos;i++){
		printf("The value is %d",i);
	}
}

生成.o与.so文件如下图:


linux下动态库的规范命名:
libxxx.so
前缀 lib
后缀 .so
其中 xxx是库的名称
例如 , libexample.so

 

使用nm命令查看库中的符号
nm  libexample.so

可以看见里面有一个printii,其中print为函数名,ii为两个int型变量

Logo

更多推荐