在WINDOWS系统中有很多的动态链接库(以.DLL为后缀的
文件,DLL即Dynamic Link Library)。这种动态链接库,和静态
函数库不同,它里面的函数并不是执行程序本身的一部分,而是根据执行程序需要按需装入,同时其执行代码可在多个 执行程序间共享,节省了空间,提高了效率,具备很高的灵活性。同样,LINUX的也具备类似的动态链接库,而且为数不少。在/lib目录下,就有许多以.so作后缀的文件,这就是LINUX系统应用的动态链接库,只不过与WINDOWS叫法不同,它叫so,即Shared Object,共享对象。(在LINUX下,静态函数库是以.a作后缀的) X-WINDOW作为LINUX下的标准图形窗口界面,它本身就采用了很多的动态链接库(在/usr/X11R6/lib目录下),以方便程序间的共享, 节省占用空间。flash只是一个插件,在windows中就是一个ocx的链接库方式(和dll略有不同),因此linux中一旦你了一个共享函数库,你还需要安装它。其实简单的方法就是拷贝 \x0d\x0a你的库文件到指定的标准的目录(例如/usr/lib),然后运行ldconfig。 \x0d\x0a如果你没有权限去做这件事情,例如你不能修改/usr/lib目录,那么 \x0d\x0a你就只好通过修改你的环境变量来实现这些函数库的使用了。首先, \x0d\x0a你需要创建这些共享函数库;然后,设置一些必须得符号链接,特别 \x0d\x0a是从soname到真正的函数库文件的符号链接,简单的方法就是运行ldconfig: \x0d\x0aldconfig -n directory_with_shared_libraries \x0d\x0a然后你就可以设置你的LD_LIBRARY_PATH这个环境变量,它是一个以逗号 \x0d\x0a分隔的路径的集合,这个可以用来指明共享函数库的搜索路径。例如 \x0d\x0a,使用bash,就可以这样来 \x0d\x0a启动一个程序my_program: \x0d\x0aLD_LIBRARY_PATH=.LD_LIBRARY_PATH my_program你知道windows下的dll文件吗???
其实和linux下的so文件是一回事,,so文件也是编译好了的二进制的链接库文件,,,
一般来说都是c或c++编译出来的,,java的话通常是用的字节码,也就是class文件。。
你自己写一个 helloworld的c程序,然后在命令行下用编译器编译gcc -c helloworld.c -o hello.o这样编译出来的结果就是那样的东西了。。这样的文件是不能直接运行的。。
假设在linux上用gcc编译程序,需要用下列编译选项生成.so文件:
gcc -fPIC -shared
.so 文件安装一般是在/usr/lib或者/usr/local/lib下,安装后不需要绝对路径即可使用。当然你也可以安装到工程文件夹下面,不过很少有这么做的。使用时只需要dlopen()函数打开这个库,用dlsym()函数将动态库的函数体加载进来;同样已加载的动态函数库可以用dlclose()关闭。
详细使用方法百度搜dlopen 即可。
评论列表(0条)