linux的excutable在执行的时候缺省是先搜索/lib和/usr/lib这两个目录,然后按照ld.so.conf里面的配置搜索绝对路径,linux缺省是不会在当前目录搜索动态库的。windows加载动态库的时候,缺省是首先加载本地目录下的动态库,然后再搜索windows/system和windows/system32目录。
windows的动态库搜索顺序,虽然有可能会造成潜在的混乱,但是对于开发和测试无疑是比较方便的,尤其是debug和release版本的动态库需要经常切换进行测试的时候。linux的动态库搜索顺序虽然可以说成是比较严谨,但是相对来说也比较呆板,有时候会造成不便。
其实,linux也可以支持“加载当前目录的动态库”。只要设置合适的环境变量LD_LIBRARY_PATH就可以了。设置方法有以下三种:
1、临时修改,log out之后就失效
在terminal中执行:export LD_LIBRARY_PATH=./
2、让当前帐号以后都优先加载当前目录的动态库
修改~/.bash_profile在文件末尾加上两行: LD_LIBRARY_PATH=./ 和 export LD_LIBRARY_PATH
3、让所有帐号从此都优先加载当前目录的动态库
修改/etc/profile在文件末尾加上两行: LD_LIBRARY_PATH=./ 和 export LD_LIBRARY_PATH
PS:修改ld.so.conf不能达到我们的目的,因为ld.so.conf只支持绝对路径。
分享到:
相关推荐
Linux qtcreator动态加载动态链接库案例
2. 加载动态库:在程序执行过程中,动态库会被加载到内存中。 3. 解析符号表:动态库加载后,系统会解析符号表,确定符号的地址。 4. PLT 和 GOT 表:在动态库加载过程中,会生成 PLT(Procedure Linkage Table)和 ...
很实用的例子,叫你如何在linux环境下编程时加载动态库。
通过一个linux应用程序加载库的异常问题,分析linux动态库的加载原理和流程
Linux下Java开发环境搭建以及加载C++动态库方法、、、
详细linux描述Qt生成so库,和应用程序(QMainwindow)加载动态库的方法,/
linux qt 动态链接库linux qt 动态链接库linux qt 动态链接库linux qt 动态链接库linux qt 动态链接库linux qt 动态链接库
Linux动态库动态加载实例[归类].pdf
Linux-调用加载动态库工程代码 对上个资源 test-ld动态库进行测试
General_NetSDKDemo_Chn_...这里的包是Linux64最全的,大华技术说其他的linux动态库都是有问题的 分三个包 大华设备各种Demo及所需jar包 \libs\linux64 examples.jar IStreamConvertor.jar jna.jar 版本5.0好像
lua动态链接库的编译 c++调用lua的的方法 linux中调用lua的环境配置
文中是linux下 C++动态库 实现接口提供类导出的一个例子 注意其中使用函数返回基类指针的用法,因为Linux的动态链接库不能像MFC中那样直接导出类 一、介绍 如何使用dlopen API动态地加载C++函数和类,是Unix C++...
Linux 提供 4 个库函数(dlopen, dlerror, dlsym 和 dlclose),一个 include 文件(dlfcn.h) 以及 两个共享库(静态库 libdl.fl 和动态库 libdl.so),以支持动态链接装入器。 这些库函数是 Linux 系统下动态加载函数...
Linux寄生程序加载动态库的研究与实现.pdf
库的存在极大的提高了C/C++程序的复用性,但是库对于初学者来说有些难以驾驭,本文从Linux的角度浅谈Linux下的静态库、动态库和动态加载库。 Linux库类型 Linux下可以创建两种类型的库: 1、静态库(.a): 在...
Linux-生成动态库工程和操作文件说明、调用加载动态库工程 本机是x86_64的 若想ARM,需加载ARM交叉编译工具链,运行即可 动态库代码在代码下一张
Linux下不能加载动态库问题 当出现下边异常情况 ./test: error while loading shared libraries: libmfs_open.so: cannot open shared object file: No such file or directory 若动态库的路径在(/usr/cluster/....
今天编译完程序运行的时候,报一个错误,说库文件不存在,然后我看了一下,程序的当前路径下就有这个库文件,我以前的认知是程序会首先在当前路径下找库,但是这个理解似乎对...动态库被创建后,一般都复制到这两个目录中。当
Linux下动态库的创建和加载.pdf
本代码将将win、linux加载、卸载动态库,并从动态库链接模块中获取类实例或函数地址等封装成统一的API接口,并集成在dllLoad.h/dllLoad.cpp中实现。构建一个注册类RegisterM,内置一个map容器,用来装载加载的动态...