1.包管理
- dpkg --list 用来列出所有的安装包
- dpkl -L libname 查找libname的所有安装文件
- apt-cache search libname ,查找相关包
- apt-cache show libname,显示软件包的详细信息
- apt-get install libname,安装
2.usr/bin/ld: cannot find 错误解决方法
通常在软件编译时出现的usr/bin/ld: cannot find -lxxx的错误,主要的原因是库文件并没有导入的ld检索目录中(检索目录为/usr/lib,和/usr/local/lib)。
解决方式:
1。确认库文件是否存在,比如-l123, 在/usr/lib, /usr/local/lib,或者其他自定义的lib下有无lib123.so, 如果只是存在lib123.so.1,
那么可以通过ln -sv lib123.so.1 lib123.so,建立一个连接重建lib123.so.(注意,链接的路径需要写为绝对路径)
2。检查/etc/ld.so.conf中的库文件路径是否正确,如果库文件不是使用系统路径,/usr/lib, /usr/local/lib, 那么必须在文件中加入。
3。ldconfig 重建ld.so.cache文件,ld的库文件检索目录存放文件。尤其刚刚编译安装的软件,必须运行ldconfig,才能将新安装的库文件导入ld.so.cache.
3. 同时安装和使用不同版本的库
安装
ubantu 下常用的库安装位置有两个:/usr 和/usr/local. 通过apt-get 安装的库位于/usr,自己make install的库通常位于/usr/local下。安装位置通常按照 include,lib,share文件夹来组织,include和lib分别存放头文件和库文件,而cmake模块通常在share里。如果我们要将库安装到自己指定的位置只需要在cmake时给CMAKE_INSTALL_PREFIX赋值即可,cmake DCMAKE_INSTALL_PREFIX=/usr/my,这样库就安装到/usr/my下了,在使用时find_package是找不到这个位置的,需要指定模块的位置才能正常使用.
使用
find_package()命令的原理是找到模块文件,并从中提取变量,之后我们就能正常使用OpenCV_LIB等变量了.模块文件后缀是cmake,通常位于/usr/share或/usr/local/share下,cmake默认搜索的也是这两个位置.尝试以下cmakelist,将搜索出系统中所有opencv模块的位置以及版本
PROJECT(test)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
FIND_PACKAGE(OpenCV 8 REQUIRED)#尝试找一个不存在的版本
通常我们需要使用特定版本,在cmake之前赋值OpenCV_DIR变量为自己需要的opencv版本的模块位置即可.
PROJECT(test)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
SET(OpenCV_DIR /usr/share/OpenCV/)#这里写自己需要的opencv版本的模块位置
FIND_PACKAGE(OpenCV REQUIRED)
MESSAGE(KaTeX parse error: Expected 'EOF', got '#' at position 18: …penCV_VERSION})#̲输出看一下 MESSAGE({OpenCV_DIR})
4.二进制库文件,安装到系统
sudo cp -r * /usr/local