网站导航功能,做网站买岩棉,seo 关键词优化,pc端兼手机端网站模板以下实例的环境是amd64 ubuntu10.10 g 4.4.5测试成功#xff0c;在其他配置的机器上可能有一点区别。 动态库的使用方式中有两种#xff0c;第一种是类似于静态库的使用#xff0c;另一种我称之为真正的动态加载动态库#xff0c;主要是因为这种方式在程序运行的过程中加载…以下实例的环境是amd64 ubuntu10.10 g 4.4.5测试成功在其他配置的机器上可能有一点区别。 动态库的使用方式中有两种第一种是类似于静态库的使用另一种我称之为真正的动态加载动态库主要是因为这种方式在程序运行的过程中加载链接库使用之后在卸载链接库。 先介绍第一种。 在目录/home/owner/test/下创建我们的实验程序 //dll_fun.c #includestdio.h void dll_function(const char*szString) { printf(%s\n, szString); } 编译生成动态链接库 gcc -c-fPIC dll_fun.c //这里一定要加上-fPIC选项不然下一步编译失败 gcc -shared -fPIC -olibdllfun.so dll_fun.o //生成动态链接库libdllfun.so 创建调用动态库方法 //main.c void dll_function(const char*szString); int main() { dll_function(This is the words of the dllfunction!!!!!!); return0; } 编译main.c生成可执行文件 gcc -o main main.c -L. -ldllfun//这里提供了刚才生成的dllfun库 如果此时执行./main的话会出现如下错误 cannot open shared object file:No such file or directory 这是因为系统未找到动态库libdllfun.so。 Linux动态链接库的默认搜索路径是/lib和/usr/lib因此动态库被创建后一般都复制到这两个目录下面当程序执行时需要某动态库并且改动态库还没有加载到内存中则系统会自动到这两个默认的搜索路径中去查找相应的动态库文件然后加载改文件到内存中这样程序就可以使用该动态库中的函数以及该动态库中的其他资源了。在linux中动态库的搜索路径除了默认的搜索路径外还可以通过其他三种方法来指定这里只介绍其中的一种通过环境变量LD_LIBRARY_PATH指定动态库搜索路径。 当通过该环境变量指定多个动态链接库搜索路径时路径之间用冒号:分隔。 使用下面命令来配置环境 mkdir /home/owner/test/lib//将这个目录设置为动态库的存放目录 mkdir/home/owner/test/libdllfun.so /home/owner/test/lib/libdllfun.so export LD_LIBRARY_PATH/home/owner/test/lib 此时设置这个环境变量之后的所有命令命令中该环境变量都有效。 把.so(动态链接库)直接放在根目录下的lib文件下一面总是加载不到路径