ubuntu16.04 caffe /usr/bin/ld : cannot find -lxxx (xxx代表不同的库名称)

来源:互联网 发布:青少年犯罪率数据2016 编辑:程序博客网 时间:2024/06/13 01:52

lxxx事实代表的一个动态链接库,而动态链接库的文件名通常应为 libxxx.so

这种问题可以归结为在ubuntu系统编译过程中出现的库缺失问题。

一般有三个原因:

库没有安装对应的库,此时基本可以通过“sudo apt-get install libxxx-dev” 来安装。

另,可以通过apt-cache search libxxx来查找是否存在相应的库(当作废话吧,没太大用)

库存在的路径没有告知编译器,也可以说史没有在编译配置文件(通常在Makefile.conf)中加入

比如在caffe编译的配置文件中,初始的配置是不完善的,比如下面这两行配置语句:

# Whatever else you find you need goes here.
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib

默认你所安装的其他依赖的库文件都在 /usr/local/include,/usr/local/lib 和 /usr/lib中,但是不同的系统和用户安装的位置是有细微的差别的。

所以你就必须首先查找报错的库或者头文件在那个位置,这个可以通过‘locate’或‘find’命令来查,然后将所在路径加入对应环境变量中,例如:

# Whatever else you find you need goes here.
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial

库文件名没有正确指向到库,这种情况也应该先找到对应的库文件,然后通过建立软链接来进行修改,

ln -sf */libxxx.so.x *libxxx.so

原创粉丝点击