zoukankan      html  css  js  c++  java
  • Linux下库文件的设置 (/usr/bin/ld: cannot find -lxxx 的解决办法)

    在软件编译过程中,经常会碰到类似这样的编译错误:
    /usr/bin/ld: cannot find -lhdf5
    
    这表示找不到库文件 libhdf5.so,若是其它库文件,则是 cannot find -lxxx 了,其中 xxx 是库文件的名字。
    

    解决方法有:

    1. 安装此库文件和相关软件

    一般库文件属于某个软件,google搜索该软件并安装,或者使用 yum 安装。

    2. 将库文件所在路径添加到gcc的搜索路径

    使用以下命令查询gcc能否搜寻到指定的库文件:

    $ gcc -lhdf5 --verbose
    
    查询库文件 libhdf5.so 是否能在搜索路径中找到。
    

    若安装了软件,找到了库文件的路径。但是依然会提示上述错误。则表示gcc的搜索路径不包含该库文件所在的路径。将库文件所在的路径加入到搜寻路径中的方法为:

    2.1 使用 /etc/ld.so.conf 配置文件

    将库文件所在的路径加入到 /etc/ld.so.conf 尾部,并使之生效:

    $ sudo echo '/opt/biosoft/hdf5-1.8.15-patch1/lib/' >> /etc/ld.so.conf
    libhdf5.so 在路径 /opt/biosoft/hdf5-1.8.15-patch1/lib/ 下,将该路径加添加到配置文件中
    $ sudo ldconfig
    运行该命令,重新载入 /ext/ld.so.conf 中的路径,使修改生效。
    

    2.2 修改环境变量

    $ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/biosoft/hdf5-1.8.15-patch1/lib/
    修改环境变量 LD_LIBRARY_PATH,加入库文件所在路径。使用 export 命令使修改生效。
    
    $ echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/biosoft/hdf5-1.8.15-patch1/lib/' >> ~/.bashrc
    $ source ~/.bashrc
    将上述 export 命令加入到配置文件 ~/.bashrc,使之永久生效。
    
    $ export LIBRARY_PATH=/opt/biosoft/hdf5-1.8.15-patch1/lib/:$LIBRARY_PATH
    若修改变量 LD_LIBRARY_PATH 不奏效,则修改变量 LIBRARY_PATH 。

    https://www.cnblogs.com/zhming26/p/6164131.html

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    通常在软件编译时出现的usr/bin/ld: cannot find -lxxx的错误,主要的原因是库文件并没有导入的ld检索目录中。

    解决方式:

    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.

    4。测试,gcc -l123 --verbose.

    这里的123为对应的库名称,123只是个例子不是mode

    2.3  编译方法

    gcc -o test test.c -l(库名称:去掉“lib”)

    参考:

     http://jiangwenfeng762.iteye.com/blog/1740325

  • 相关阅读:
    【Javascript】javascript学习 二十二 JavaScript 对象简介
    【Javascript】javascript学习 二十六 JavaScript Boolean(逻辑)对象
    【Javascript】javascript学习 二十九 JavaScript HTML DOM 对象
    【Javascript】javascript学习 二十八 JavaScript RegExp 对象
    【Javascript】javascript学习 二十一 JavaScript 指导方针
    【Javascript】javascript学习 二十三 JavaScript 字符串(String)对象
    【Javascript】javascript学习 三十 JavaScript 浏览器检测
    【Javascript】javascript学习 二十五 JavaScript Array(数组)对象
    【Javascript】javascript学习 二十四 JavaScript Date(日期)对象
    【Javascript】javascript学习 二十七 JavaScript Math(算数)对象
  • 原文地址:https://www.cnblogs.com/zzdbullet/p/9725234.html
Copyright © 2011-2022 走看看