一、Windows上库的使用
在Windows上要想使用一个第三方库,首先需要配置三个内容(以Visual Studio为例):
配置项 | 配置方法 |
动态链接库(*.dll) | 在path环境变量后追加动态链接的位置 |
静态链接库(*.lib) | VS->项目属性->VC++目录->库目录,在此添加上静态库的位置 VS->项目属性->链接器->输入,在此添加上所有库的名字 |
头文件(*.h) | VS->项目属性->VC++目录->包含目录,在此添加上所有头文件的位置 |
(可选项)程序数据库文件(*.pdb) | 在编译完库之后,形成于dll同文件夹处,无需额外操作,只要存在即可 |
注:*.pdb文件用于在调试时使用,可帮助用户跟踪到库的源码处。
清理解决方案的时候*.pdb文件会被清除掉。
二、Linux上库的使用
当安装一个库时(例如从RPM,deb或其他二进制包管理系统),会包括一个后缀名为pc的文件,它会放入某个文件夹下(依赖于你的系统设置,其父文件夹一般名为"pkgconfig")。
该*.pc可以帮助我们在编译程序的时候自动协助查找头文件及库文件的位置,使用方式如下(以opencv为例):
g++ main.cpp -o main `pkg-config --cflags --libs opencv`
其中:--cflags代指头文件的位置,--libs代指库文件的位置。
若有多个第三方需要添加使用的时候,可以直接加入即可(以png的库为例):
g++ main.cpp -o main `pkg-config --cflags --libs opencv libpng`
补充:
1. pkg-config可单独做命令使用,使用方式如下:
pkg-config --cflags --libs opencv #此命令可帮助查询是否有opencv.pc存在
2. 在使用上述命令的时候,pkg-config通过环境变量PKG_CONFIG_PATH来查询opencv.pc的位置。若在opencv.pc存在的情况下,上述命令不可用,即可通过向/etc/bash.bashrc等启动文件中追加opencv.pc位置信息的途径,来帮助pkg-config命令功能的实现。格式如下:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig #请以自己系统中opencv.pc的实际位置为准
export PKG_CONFIG_PATH
或以命令的方式(重启后失效):
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
3. 以下以linpng为例展示libpng.pc的文件格式。从文件中我们就可以看出pkg-config命令是怎么一步步地找到库文件和头文件的位置的。
prefix=/usr
exec_prefix=${prefix}
libdir=${prefix}/lib/x86_64-linux-gnu
includedir=${prefix}/include/libpng12
Name: libpng
Description: Loads and saves PNG files
Version: 1.2.50
Libs: -L${libdir} -lpng12 #-L为gcc命令的编译选项,用于指明静态库的位置
Libs.private: -lz -lm
Cflags: -I${includedir} #-I为gcc命令的编译选项,用于指明头文件的位置