Thomson-Blog ( 学习,学习,再学习;努力,努力,再努力。)
在学习的路上不断成长,成功之路就在脚下。

                                                                                    来源: ChinaUnix博客   作者: ChinaUnix博客

     动态链接库是一种通用的软件组件技术,是多种操作系统中提供基本服务的方式。比如Win32内核就 是几个DLL文档构成。这种技术在Linux操作系统下也有对应的实现,就是Linux标准对象Standard Ojbect,对应的文档扩展名为.so。下面通过一个简单的例子开始介绍Linux标准对象。我们的标准对象文档含有一个函数,无需声明export导 出符号,只需要编译器配置即可。如下:

#include
void show()
{
    printf("Standard Object by gashero"n");
}
保存为myso.c文档,按照如下编译:
$ gcc -fPIC -shared -o libmyso.so myso.c
执行生成一个libmyso.so文档,按照Linux标准对象的命名惯例,应该在库名称之前加上"lib"前缀,尽管不是必须的。编译开关-fPIC代表函数符号能够重定向,-shared代表编译结果是个标准对象。
不同于Win32DLL,Linux标准对象中的任何函数都是直接导出的,都能够被调用程式所访问。下面我们编写调用程式:
#include
int main()
{
   printf("Invoke my so"n");
   show();
   return 0;
}
保存为invoke.c,按照如下gcc开关编译:
$ gcc -o test invoke.c ./libmyso.so
编译生成test可执行文档。如上编译条件的最后一条需要是所调用的标准对象文档名,注意必须含有路径。假如只是使用libmyso.so,则必须确 保这个文档在可访问的PATH下面。本例所使用的文档名"./libmyso.so"是当前路径下的,使用了相对路径。
测试输出结果如下:
$ ./test
Invoke my so
Standard Object by gashero
posted on 2008-10-17 13:19  Thomson-Blog  阅读(268)  评论(0编辑  收藏  举报