LD_LIBRARY_PATH详解,从此不害怕安装C语言源代码软件(欢迎海南大学的51粉丝)

今天的推文稍微有点不一样,生信技能树/菜鸟团的铁粉都知道我们的推文都是纯粹的知识分享,几乎不发二维码,我大学同学在学院开讲座想普及一下生物信息学知识顺便宣传一下我这里的工作,发现找不到我们的二维码,所以亲自给我做了一个宣传图,并且带来了51个学弟学妹粉丝,欢迎你们!

下面是正文:

我在B站上面讲解过软件安装全集,其实是怕新手还没入门就放弃,所以只是简单分类,然后强调大家尽量不要碰C源代码软件,能conda就conda,实在不行找二进制可执行程序:

其实,C源代码的确是有点难度,但是掌握了LD_LIBRARY_PATH概念就还好了,下面我就简单介绍一下:

LD_LIBRARY_PATH是Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。

非常多的软件没有root权限安装会比较困难,主要就是因为各种系统库文件,也就是LD_LIBRARY_PATH这个环境变量里面的文件。比如前面我提到的lancet软件需要的库文件如下:

-llzma -lbz2 -lz -ldl -lpthread -lcurl -lcrypto -lbamtools

可以使用 ls /usr/lib |grep lib 查看自己是否有需要的库文件,当然还需查看其它库文件目录:echo $LD_LIBRARY_PATH 里面一般可以看到七八个已经定义好的库文件搜索路径。

当执行函数动态链接.so时,如果此文件不在缺省目录下 /lib和/usr/lib,那么就需要指定环境变量LD_LIBRARY_PATH 假如现在需要在已有的环境变量上添加新的路径名,则采用如下方式: LD_LIBRARY_PATH=NEWDIRS:$LD_LIBRARY_PATH (newdirs是新的路径串), 实例如下;

cpp export LD_LIBRARY_PATH=/export/apps/anaconda2/2.4.1/lib/:$LD_LIBRARY_PATH ¨G1G /usr/bin/ld: cannot find -llzma collect2: error: ld returned 1 exit status make[1]: *** [lancet] Error 1 make[1]: Leaving directory `/home/jianmingzeng/biosoft/lancet/lancet/src' cp: cannot stat `lancet': No such file or directory ¨G2G shell gcc -llzma --verbose ¨G3G locate liblzma /export/apps/anaconda2/2.4.1/lib/liblzma.a /export/apps/anaconda2/2.4.1/lib/liblzma.la /export/apps/anaconda2/2.4.1/lib/liblzma.so /export/apps/anaconda2/2.4.1/lib/liblzma.so.5 /export/apps/anaconda2/2.4.1/lib/liblzma.so.5.0.5 ¨G4G export LD_LIBRARY_PATH=/export/apps/anaconda2/4.0.0/lib/:$LD_LIBRARY_PATH export LIBRARY_PATH=/export/apps/anaconda2/4.0.0/lib/:$LIBRARY_PATH

为什么修改LD_LIBRARY_PATH呢

因为运行时动态库的搜索路径的先后顺序是:
1.编译目标代码时指定的动态库搜索路径;
2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径;
3.配置文件/etc/ld.so.conf中指定的动态库搜索路径;
4.默认的动态库搜索路径/lib和/usr/lib;

这个顺序是compile gcc时写在程序内的,通常软件源代码自带的动态库不会太多,而我们的/lib和/usr/lib只有root权限才可以修改,而且配置文件/etc/ld.so.conf也是root的事情,我们只好对LD_LIBRARY_PATH进行操作啦。

永久性添加

每次我使用该软件都需要临时修改库文件,因为上面的方法是临时设置环境变量 LD_LIBRARY_PATH ,重启或打开新的 Shell 之后,一切设置将不复存在。

为了让这种方法更完美一些,可以将该 LD_LIBRARY_PATH 的 export 语句写到系统文件中,例如 /etc/profile/etc/export~/.bashrc 或者 ~/.bash_profile 等等,取决于你正在使用的操作系统咯。

(0)

相关推荐

  • ubuntu下多版本cuda切换

    安装好多版本cuda之后,修改~/.bashrc文件,如果之前已经装过一个cuda了(比如第一个装好的cuda是cuda8.0),那么这时候的.bashrc文件里应该有类似如下的内容: export ...

  • export LD_LIBRARY_PATH 的使用

    对linux不是很熟,之前只是听说过可以设置程序共享库位置也就是 使用 "export LD_LIBRARY_PATH" 今天用了用,感觉还挺不错,也很常用. 比如你编译了一个so ...

  • C/C++ include 目录的简单认识

    转载:from: pieryon C/C++程序在linux下被编译和连接时,GCC/G++会查找系统默认的include和link的路径,以及自己在编译命令中指定的路径.自己指定的路径就不说了,这里 ...

  • 【图文详解】住宅楼机电安装质量通病

    觉得好看,请点这里↓↓

  • 120张高清案例照片,详解13项钢筋安装质量标准及通病防治!

    编制:广东腾越建筑工程有限公司 目录 1.钢筋的锚固质量标准及通病防治 2.墙.柱主受力钢筋安装质量标准及通病防治 3.梁主受力钢筋安装质量标准及通病防治 4.墙柱钢筋电渣压力焊质量标准及通病防治 5 ...

  • 28条图文详解,住宅机电安装施工质量检查要点!

    [1]防雷接地搭接焊:圆钢直径≥10mm,搭接长度双面焊接≥6D.单面焊接≥12D, [2]预埋穿梁线管必须使用直接头,线管绑扎执行工艺要求,成排线管安装间距≥15mm,弯曲半径≥6D. [3]预留预 ...

  • 28条图文详解,住宅机电安装施工质量检查要点!完整版PPT可下载!

    如有侵权,请联系删除[1]防雷接地搭接焊:圆钢直径≥10mm,搭接长度双面焊接≥6D.单面焊接≥12D, [2]预埋穿梁线管必须使用直接头,线管绑扎执行工艺要求,成排线管安装间距≥15mm,弯曲半径≥ ...

  • 详解电脑系统下载安装教程

    对于电脑小白用户来说,重装系统并不是一件容易的事情,很多人在遇到电脑系统故障无法进系统,想要通过重装系统解决的时候都不知道如何下载安装系统.今天小编就给大家分享一个简单的电脑系统下载安装教程. 当遇到 ...

  • 规范详解:水泵接合器的安装顺序

    ♚ 语音 ♚ 文字 往期链接:20191203发布 消防水泵接合器的总结 <自动喷水灭火系统施工及验收规范 >GB50261-2017 4.1.1 消防水泵.消防水箱.消防水池.消防气压给 ...

  • 图文详解各类型脚手架安装要点,看完记住保你脚手架不出事!

    建设安全技术与管理 有料,有品 ! 公众号 一.脚手架施工要求 1.施工作业人员 脚手架施工人员须持有特殊工种操作证,方可上岗作业. 2.脚手架安全专项施工方案 脚手架属于危险性较大的分部分项工程,必 ...

  • 基础知识 | 详解仪表管路的安装要点

    仪表管路应该怎么安装呢?需要注意哪些问题呢?下面就来一起看看吧! 对材料的要求 1 ①采用的型钢.管材.阀门.管件.焊条等主要材料应符合现行的国家或行业标准的有关规定. ②管材.阀门.管件及型钢的材质 ...

  • 图文详解Chrome插件离线安装方法

    注意事项:chrome73版本后拖拽安装chrome插件无法安装成功会提示"crx-header-invalid",解决方法参照:最新版chrome浏览器安装Chrome插件时出现 ...