在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
静态库与动态库的创建与使用 1. 基本概念 静态库:链接时,库与编译生成的 .o 文件一起打包到可执行文件中。 linux / windows 下扩展名分别为:.a / .lib 区别主要体现在: a、可维护性。 2. 静态库的创建与使用 静态库本质就是一组 .o 组成的压缩文件,扩展名为 .a / .lib 复制代码 代码如下:ar -crv libXXX.a mmmm.o nnnn.o XXX 是库名,mmmm.o nnnn.o 是要打包的目标文件。crv 参数,含义分别是 c: do not warn if the library had to be created 使用时,只需在代码中引入 头文件,链接时,指定静态库的搜索路径(-L选项)和静态库名(不需要lib前缀和.a后缀,-l选项)。 复制代码 代码如下:g++ test.cpp -L../StaticLibrary -lXXX 3. 动态库 Window与Linux执行文件格式不同,在创建动态库的时候有一些差异。 Windows 下执行文件是 PE 格式,动态库需要一个DllMain函数做出初始化的入口,通常在导出函数的声明时需要有_declspec(dllexport)关键字。 动态库的创建,使用编译器即可,不需要像静态库一样使用专门的打包工具。 若要创建动态库,源码编译时添加 -fPIC 选项,链接时添加 -shared 选项。 复制代码 代码如下:g++ -fPIC -shared -o libXXX.so xxx.cpp 用法同静态库, 复制代码 代码如下:g++ test.cpp -L../DynamicLibrary -lXXX 只是需要设置下搜索路径。默认搜索路径:/lib/, /usr/lib。 设置搜索路径: 编辑 /etc/ld.so.conf,设置搜索路径 复制代码 代码如下:gcc / g++ 参数 -I(大写 'i'),-L(大写'l'),-l(小写'L') 1、 -I(大写 'i') 头文件目录 |
请发表评论