cannot find -lxxx 解决方法

当从github上下载一个程序,去进行编译,经常发现系统找不到so文件,试了很多中方法都不行,非常苦恼; 这里为大家介绍下几种解决方案。

通常解决方法

  1. 将so查找路径添加到LD_LIBRARY_PATH中
  2. 将so查找路径添加到LD_LIBRARY_PATH中
  3. 将so查找路径添加到 /etc/ld.so.conf

通过编写makefile解决

最近从github上下载了一个工具line,试了各种方法就是找不到库,想了下这种应该在makefile中直接指定位置, makefle如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
RM=rm -rf
CC=g++

FLAGS= -I/usr/local/include/gsl -L/usr/local/lib/ -lgsl -lgslcblas -lpthread -O1 -g

line: line.o
$(CC) -o $@ $^ $(FLAGS)

line.o : line.cpp
$(CC) -c line.cpp $(FLAGS)

clean:
$(RM) line *.o

需要注意的是:

  1. 我们的gsllib名称是libgsl.so, 但是在引用的时候要把前面的lib去掉,使用-lgsl
  2. 还需要添加 gslcblas 和 pthread才能编译通过

[ 参考文档 ]

  1. https://github.com/tangjianpku/LINE
------ 本文结束 ------
k