linux so 链接路径_linux shell脚本 获取so的软链接路径 - CSDN
  • linux So链接路径设置

    2013-10-22 10:26:52
    (1) 设置$LD_LIBRARY_PATH=库所在目录(多个目录用:分隔),系统加载工具ld.so/ld-linux.so将顺序搜索变量指定的目录。例如#$LD_LIBRARY_PATH=/usr/local/mysql/lib ./test_mysql (2) 以root身份把库路径加入/etc/...
    运行时使用非标准位置/usr/lib和/lib下的库的方式有三种:
    (1) 设置$LD_LIBRARY_PATH=库所在目录(多个目录用:分隔),系统加载工具ld.so/ld-linux.so将顺序搜索变量指定的目录。例如#$LD_LIBRARY_PATH=/usr/local/mysql/lib ./test_mysql
    (2) 以root身份把库路径加入/etc/ld.so.conf或在/etc/ld.so.conf.d中创建特定的.conf文件,然后运行ldconfig更新/etc/ld.so.cache。例如:在/etc/ld.so.conf.d下创建文件mysql.conf写入/usr/local/mysql/lib
    (3) 另一种办法就是把需要的库copy到/usr/lib或/lib,但这不是建议的方法,特别是尽量避免copy发到/lib。但这种方法可以在编译时免去用-L选项。
    展开全文
  • ld.so 动态共享库搜索顺序 ...gcc加入链接参数“-Wl,-rpath”指定动态库搜索路径; 2、环境变量LD_LIBRARY_PATH指定路径; 3、/etc/ld.so.cache中缓存的动态库路径。可以通过修改配置文件/etc/ld.so.conf...

    转载自https://www.jb51.net/article/138400.htm

    ld.so 动态共享库搜索顺序

    1、ELF可执行文件中动态段DT_RPATH指定;gcc加入链接参数“-Wl,-rpath”指定动态库搜索路径;
    2、环境变量LD_LIBRARY_PATH指定路径;
    3、/etc/ld.so.cache中缓存的动态库路径。可以通过修改配置文件/etc/ld.so.conf 增删路径(修改后需要运行ldconfig命令);
    4、默认的 /lib/;
    5、默认的 /usr/lib/

    与动态链接库相关命令

    (1)ld 是gcc的链接程序。
    (2)ldd是查看可执行文件中所依赖的库的程序,比如想查main程序用到了那些动态库,可以直接 
ldd main
    (3)ldconfig用来更新文件/etc/ld.so.conf的修改生效。
    (4)nm用来查看.so库中的函数名字,标记是T的就是动态库里面生成的名字。如:nm /lib/libc*.so

    Linux 下动态链接库搜索路径问题

    Linux动态链接库的搜索路径按优先级排序为:

    1.编译目标代码时指定的动态库搜索路径;

    在编译时通过gcc 的参数”-Wl,-rpath,”指定。当指定多个动态库搜索路径时,路径之间用冒号”:”分隔。

    2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径;

    3.配置文件/etc/ld.so.conf中指定的动态库搜索路径;

    /etc/ld.so.conf的第一行有个引用命令:include ld.so.conf.d/*.conf

    因此,最优雅的方式是在ld.so.conf.d目录下创建一个你的程序依赖的配置文件,配置文件内容为程序依赖的动态链接库的路径,一个路径一行。

    添加完配置文件后执行ldconfig使其生效。

    4.默认的动态库搜索路径/lib;

    5.默认的动态库搜索路径/usr/lib;

    1、可以用 LD_LIBRARY_PATH 环境变量指定,这个类似于 PATH 机制,比较直观,而且,可以放到 bashrc 中固化下来,也可以放到自己的 .bashrc 中只对本用户起作用;

    2、如果启用了 ld.so.cache 的话,系统会在 /etc/ld.so.cache 中存储所有可引用的动态链接库。这个文件的内容可以通过 /etc/ld.so.conf 来指定;这个是比较固定的机制,对全局所有用户都有影响;不过更改设置后需要 root 调用 ldconfig 来刷新一下。

    3、默认的标准库路径,这个似乎不用设置就可以。包括 /lib 和 /usr/lib。当然,如果是64位系统,还包括 /lib64 和 /usr/lib64。

    4、其它情况,如果只想对某一个特定的应用程序起作用的话,可以在编译时指定搜索路径。gcc 的 -Wl 和 -rpath 参数。

    奇怪的是, /usr/local/lib 和 /usr/local/lib64 居然不在标准路径之列。

    展开全文
  • linux上配置caffe上经常会遇到各种错误,其中就包括ld error,即链接库无法找到之类的错误,因此在这里总结一下linux动态库搜索路径的配置。 动态链接库 动态链接库是程序运行时需要加载的库,类似windows里的...

    在linux上配置caffe上经常会遇到各种错误,其中就包括ld error,即链接库无法找到之类的错误,因此在这里总结一下linux动态库搜索路径的配置。

    动态链接库

    动态链接库是程序运行时需要加载的库,类似windows里的dll,常以.so结尾,里面打包了c/c++程序的一些具体实现。
    当我们运行某个程序需要依赖某个动态库时,就需要给程序指定该动态库的路径。

    动态库路径

    动态库的搜索路径可以通过以下方式配置:

    1. 根据LD_LIBRARY_PATH这个环境变量来找,可以通过在~/.bashrc中加入export LD_LIBRARY_PATH=/XXX:$LD_LIBRARY_PATH来配置该环境变量,然后用source ~/.bashrc使其生效。
    2. 更改配置文件/etc/ld.so.conf,加入搜索路径。
    3. 进到/etc/ld.so.conf.d/目录下,会有很多*.conf文件,可以加入自定义的.conf文件来配置搜索路径,比如opencv的配置文件opencv.conf中加入/usr/local/lib,让系统在该路径下去找opencv的libraries (libopencv*.so*)。

    链接错误解决方法

    如果遇到ld错误,说找不到某某库文件 (.so),则需先在系统中搜索该库文件是否存在,用locate libxxx.so。若存在,则是因为系统找不到该库文件,需要按照上述方式手动添加;若不存在,则可用apt-get安装库或者下载源码libxxx.tar.gz自行编译。
    (先写到这里吧,后续有再补充…)

    展开全文
  • 1、在配置文件/etc/ld.so.conf中指定动态库搜索路径(需要添加其它库文件的路径,在文件的最后添加具体的路径即可 [ 如:/usr/local/lib ],添加后保存退出,然后在命令行ldconfig 2、通过环境变量LD_LIBRARY_PATH...

    一、库文件的搜索路径:

    1、在配置文件/etc/ld.so.conf中指定动态库搜索路径(需要添加其它库文件的路径,在文件的最后添加具体的路径即可 [ 如:/usr/local/lib ],添加后保存退出,然后在命令行ldconfig

    2、通过环境变量LD_LIBRARY_PATH指定动态库搜索路径(当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号":"分隔)

    3、在编译目标代码时指定该程序的动态库搜索路径(还可以在编译目标代码时指定程序的动态库搜索路径。 这是通过gcc 的参数"-Wl,-rpath,"指定,当指定多个动态库搜索路径时,路径之间用冒号":"分隔)

    4、默认的动态库搜索路径/lib

    5、默认的动态库搜索路径/usr/lib

    搜索的先后顺序是:

    1.编译目标代码时指定的动态库搜索路径;

    2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径;

    3.配置文件/etc/ld.so.conf中指定的动态库搜索路径;

    4.默认的动态库搜索路径/lib;

    5.默认的动态库搜索路径/usr/lib。

    二、Shell可执行程序命令文件搜索路径:

    1.查看所有的搜索路径:echo $PATH

    2.添加新的路径:

    1)只对当前shell窗口有效:

    export PATH=$PATH:/new path

    2)对所有窗口有效:

    修改当前用户的.bash_profile文件,在PATH=$PATH……后添加":/new path";

    保存退出后,需要在当前窗口中执行". .bash_profile",更新配置,之后用echo $PATH显示更新后的路径,可以看到新加入的路径;

    注意:在重新登录前所有新打开的shell窗口要用到新的路径都需要执行". .bash_profile",更新配置,因为.bash_profile文件的内容在用户登录时就读取了.

    From:https://blog.csdn.net/stpeace/article/details/79923977

     

    展开全文
  • Linux动态链接库搜索路径 2011-06-30 11:43:59 分类: LINUX  编译程序时如果程序依赖的动态链接库没有安装在系统标准路径:/lib/或/usr/lib程序运行时往往提示找不到相应的动态链接库文件无法执行,原因...
  • linux 下获得so路径

    2016-08-29 09:04:02
    #include #include #include #include //#include <dlfcn.h>void getSOPath(void *fun) { char *pDest; Dl_info dlinfo; int ret=0; ret = dladdr(fun,&dli
  • ldd命令linux 下可以使用ldd查看可执行文件所需要的动态链接库(*.so)。 注:下文用so代替动态链接库文件。// 举个例子 ~$ ldd /bin/ls linux-vdso.so.1 =&gt; (0x00007ffe06386000) libselinux.so.1 =&...
  • 1. export LD_LIBRARY_PATH=`具体路径` 将某具体路径添加到动态库路径环境变量,但仅当前终端有效 2. 将.so文件放到/lib或/usr/lib目录下(不推荐) 3. 将库文件绝对路径添加到/etc/ls.so.conf文件中,并用...
  • 共享库的搜索 共享库的搜索出了系统默认路径外,还可以通过下面方法...LD_LIBRARY_PATH 运行期查找动态链接库的路径,会在系统默认路径之前查找; 还可以通过GCC参数指定: 编写Makefile一个好的习惯是先-L指定路...
  • 在做实验的时候,使用了动态链接库,比如mysql的mysqlclient使用到了lib/的动态库 使用的是arm-linux-gcc -o s3 zonghe.c -I /home/iot/mysql/include/ -L/home/iot/mysql/lib -lmysqlclient 其中它的路径是绝对的...
  • 1 2 ...export LD_LIBRARY_PATH=你的库的路径:$LD_...linux 默认回去/lib和/usr/lib目录下查找库,可以通过ln建立软连接   转: 1. 连接和运行时库文件搜索路径到设置 库文件在连接(静态库和共享库
  • 那么自制的库在没有指定运行时库的路径时,一般是不会找到你特定目录的,先来说说链接库的搜寻顺寻:1.编译目标代码时指定的动态库搜索路径(指的是用-wl,rpath或-R选项而不是-L);example: gcc -Wl,-rpath,/home/...
  • Linux 中,动态库的搜索路径除了默认的搜索路径外,还可通过三种方法来指定:方法一:在配置文件/etc/ld.so.conf中指定动态库搜索路径;方法二:通过环境变量LD_LIBRARY_PATH指定动态库搜索路径;方法三:在编译...
  • 众所周知,Linux动态库的默认搜索路径是/lib和/usr/lib。动态库被创建后,一般都复制到这两个目录中。当程序执行时需要某动态库,并且该动 态库还未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相应的...
  • 最近在做JNI程序时,用到了相当于windows环境下的dll--动态链接库的so库,即linux环境下,程序执行时所需要函数链接库。 一般来说的so路径寻找包括编译时和运行时,因为前边提到的是JNI调用,则此处说的路径寻找...
  • Linux下整合.so库到java工程中的过程中,使用JNA遇到加载不到so的问题。现在总结一下: 1.在Linux下,IDEA中。.so的库只会识别在/target/classes/路径下。因此手动直接将.so放到此处就可以识别。 (注意到没有,这...
  • 连接器使用下面的搜索路径来定位需要的共享库:   1. 所有由"-rpath-link"选项指定的搜索路径.   2. 所有由"-rpath"指定的搜索路径. “-rpath"跟"-rpath_link"的不同之处在于,由"-rpath"指定的路径被包含在...
1 2 3 4 5 ... 20
收藏数 65,679
精华内容 26,271
关键字:

linux so 链接路径