1.include文件

编译时,用“”而非<>引用的头文件,会在源码所在的目录中搜寻头文件。用<>引用的头文件一般会在usr/include,usr/local/include等中搜寻。

2.lib动态库文件

编译时引用的库文件一般会在usr/lib,usr/local/lib等中搜寻。

3.有些库或头文件并不在默认的搜寻路径中,怎么办呢?

办法1:移动到默认的搜寻路径中

办法2:编译时用-I 指定include目录,-L指定lib路径,-l指定库名,但是运行文件时,需要指定库的搜索路径

LD_LIBRARY_PATH=$(pwd)   ./binaryname

办法3:在环境变量中

增加.so搜索路径

 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/liheyuan/soft/lib
     
  #增加 .a 搜索路径
 LIBRARY_PATH=$LIBRARY_PATH:/home/liheyuan/soft/lib
     
  #增加 bin目录 搜索路径
  export PATH=$PATH:/home/liheyuan/soft/bin
     
  #增加GCC的 include 文件搜索路径 xx.h
  export C_INCLUDE_PATH=$C_INCLUDE_PATH:/home/liheyuan/soft/include
     
  #增加G++的 include 文件搜索路径
  export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/home/liheyuan/soft/inc

办法4:

在 /etc/ld.so.conf 文件中添加库的搜索路径。(或者在/etc/ld.so.conf.d 下新建一个.conf文件,将搜索路径一行一个加入。

需要注意的是:这种搜索路径的设置方式对于程序连接时的库(包括共享库静态库)的定位已经足够了,但是对于使用了共享库的程序的执行还是不够的。这是 因为为了加快程序执行时对共享库的定位速度,避免使用搜索路径查找共享库的低效率,所以是直接读取库列表文件 /etc/ld.so.cache 从中进行搜索的。/etc/ld.so.cache 是一个非文本的数据文件,不能直接编辑,它是根据 /etc/ld.so.conf 中设置的搜索路径由 /sbin/ldconfig 命令将这些搜索路径下的共享库文件集中在一起而生成的(ldconfig 命令要以 root 权限执行)。

问题:

configure: error: libtermcap, libcurses or libncurses are required!

本地执行yum install openssl openssl-devel -y 成功后,

执行./configure还是报 configure: error: OpenSSL libraries are required

找到一篇文章试了试 LDFLAGS="$LDFAGS -L /opt/sensu/embedded/lib" ./configure(写成一行)解决了问题

/opt/sensu/embedded为openssl安装路径,可用 rpm -ql openssl|more 看看那个是安装目录

,确认安装目录对了如果还不行,可以试试

LDFLAGS="$LDFLAGS -L /usr/local/ssl/lib" CFLAGS="$CFLAGS -I /usr/local/ssl/include" ./configure

cmake已安装依赖但是找不到

cmake -DZLIB_LIBRARY:FILEPATH="C:/path/to/zlib/zlib.lib" -DZLIB_INCLUDE_DIR:PATH="c:/path/to/zlib/include"