linux的excutable在执行的时候缺省是先搜索/lib和/usr/lib这两个目录,然后按照ld.so.conf里面的配置搜索绝对路径,linux缺省是不会在当前目录搜索动态库的。windows加载动态库的时候,缺省是首先加载本地目录下的动态库,然后再搜索windows/system和windows/system32目录。


windows的动态库搜索顺序,虽然有可能会造成潜在的混乱,但是对于开发和测试无疑是比较方便的,尤其是debug和release版本的动态库需要经常切换进行测试的时候。linux的动态库搜索顺序虽然可以说成是比较严谨,但是相对来说也比较呆板,有时候会造成不便。

ldd LB //查看进程依赖的动态库

其实,linux也可以支持“加载当前目录的动态库”。只要设置合适的环境变量LD_LIBRARY_PATH就可以了。设置方法有以下三种:

1、临时修改,log out之后就失效
在terminal中执行:export LD_LIBRARY_PATH=./

2、让当前帐号以后都优先加载当前目录的动态库
在Red Hat中修改~/.bash_profile在文件末尾加上两行: LD_LIBRARY_PATH=./ 和 export LD_LIBRARY_PATH

(而在ubuntu中要修改的文件的名称是~/.bash_profile)

3、让所有帐号从此都优先加载当前目录的动态库
修改/etc/profile在文件末尾加上两行: LD_LIBRARY_PATH=./ 和 export LD_LIBRARY_PATH
PS:修改ld.so.conf不能达到我们的目的,因为ld.so.conf只支持绝对路径。

linux的excutable在执行的时候缺省是先搜索/lib和/usr/lib这两个目录,然后按照ld.so.conf里面的配置搜索绝对路径,linux缺省是不会在当前目录搜索动态库的。windows加载动态库的时候,缺省是首先加载本地目录下的动态库,然后再搜索windows/system和windows/system32目录。windows的动态库搜索顺序,虽然有可能会造成潜在的混乱,但是对于开发和测试无疑是比较方便的,尤其是debug和release版本的动态库需要经常切换进行测试的时候。linu include /etc/ld.so.conf.d/*.conf 可以在此目录下加入自定义的 动态库 搜索 路径 同时,这个include说明可以在/etc/ld.so.conf.d下添加相关 文件 进入/etc/ld.so.conf.d,目录下有若干.conf后缀... # uninstall dpkg sudo apt --purge remove libboost-dev sudo apt --purge remove libboost-all-dev sudo apt --purge autoremove libboost-all-dev # to uninstall the version which we installed fr...
ubuntu 如何编辑/etc/ld.so.conf Step1 vi /etc/ld.so.conf Step2 按’i’进入编辑模式,此时在最后一行会出现INSERT的提示,修改要改动的地方 Step3 按’esc’退出编辑模式 Step4 按’:wq’保存修改并退出 Step5 输入ldconfig使修改后的 设置 生效
Ubuntu 下编译安装opencv,以及软链接、so版本号的处理1. 编译安装opencv(正常流程)1.1 安装依赖环境1.2 下载opencv源码1.3 编译安装2. 两层软链接变为一层软链接3. 去掉so后边的版本号 写在最前: Ubuntu 下编译安装opencv还是比较简单的,最近要发布依赖opencv的程序,突然发现编译安装的opencv有两层软链接: libopencv_world.so.4.4 -> libopencv_world.so.4.4.0 libopencv_world.so
文章目录一、静态库和 动态库 1.库的含义2.静态库(.a)3. 动态库 (.so)4.静态库和 动态库 的区别二、用.gcc生成静态库和 动态库 1.准备工作(1)2.生成静态库(.a)3.生成 动态库 (.so) 一、静态库和 动态库 1.库的含义 库就是已经写好的,成熟的,可以直接使用的代码,通常情况下,将已经写好的一些公用函数制作成函数库,提供给使用者和其他程序反复使用。 从本质上来说,库是一种可执行代码的二进制形式,可被操作系统载入内存执行。 库分为静态库和 动态库 两种。 2.静态库(.a) 静态库:在链接步骤中,
自己在CUDA cudnn这一块出现错误了‘’/sbin/ldconfig.real: /usr/local/cuda-8.0/targets/x86_64- linux /lib/libcudnn.so.4 不是符号连接‘’ 然后在终端输入: sudo ldconfig -v找到这一行错误:libcudnn.so.4 -> libcudnn.so.4.0.7 是这个链接错误,然后在终端输入:
1. 使用 文件 管理器打开 在 Ubuntu Linux 的桌面环境下,默认会有一个叫做“ 文件 ”的 文件 管理器,可以通过点击左侧栏的“ 文件 ”图标进入。在 文件 管理器中,可以通过双击 文件 打开它,也可以右键点击 文件 ,选择“打开”选项。 2. 使用命令行打开 在 Ubuntu Linux 中,可以使用命令行打开 文件 ,这需要使用到一些命令。比如,要打开一个名为“test.txt”的文本 文件 ,可以使用以下命令: $ vi test.txt $ nano test.txt 其中,“vi”和“nano”是 Linux 中的两个文本编辑器,选择哪个来打开 文件 可以根据自己的喜好和习惯来决定。 3. 使用默认应用程序打开 在 Ubuntu Linux 中,每个 文件 类型都有一个默认的应用程序来打开它。比如,文本 文件 通常会使用文本编辑器来打开,音乐 文件 会使用音乐播放器来打开。如果想要打开一个 文件 ,并使用默认的应用程序来打开它,可以右键点击 文件 ,选择“打开方式”选项,然后选择想要使用的应用程序即可。 以上是几种比较常见的方式,当然还有其他的一些方式,根据实际情况选择最合适的方法即可。
【Pyinstaller】OSError: [WinError 126] 找不到指定的模块。 Error loading “*.dll“ or one of its dependencies weixin_44257766: 当他们都没什么问题,还报错是为什么,没有丢失dll文件,依赖项也正常 [Docker] 错误之“docker build“ requires exactly 1 argument(s). there2belief: 谢谢建议,特别备注了 [Docker] 错误之“docker build“ requires exactly 1 argument(s). Flowers721: 后面是空格再加 . 没特别说明真注意不到