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:
[Docker] 错误之“docker build“ requires exactly 1 argument(s).
there2belief:
[Docker] 错误之“docker build“ requires exactly 1 argument(s).
Flowers721: