博客首页 注册 建议与交流 排行榜 加入友情链接         宝宝相册的专门空间
推荐 投诉 搜索: 帮助

愿逝者安息 让生者前行 深切哀悼5.12遇难同胞

愿逝者安息 让生者前行 深切哀悼5.12遇难同胞
creatory.cublog.cn


Linux SO Program
Linux SO Program
动态链接库是一种通用的软件组件技术,是多种操作系统中提供基本服务的方式。比如Win32内核就是几个DLL文件构成。这种技术在Linux操作系统下也有对应的实现,就是Linux标准对象Standard Ojbect,对应的文件扩展名为.so。下面通过一个简单的例子开始介绍Linux标准对象。我们的标准对象文件含有一个函数,不需要声明export导出符号,只需要编译器设置即可。如下: 
//my.c
#include <stdio.h>
void disp()
{
printf("hello linux so\n");
}
编译成动态库:
gcc -fPIC -shared -o libmy.so my.c
执行生成一个libmy.so文件,按照Linux标准对象的命名惯例,应该在库名称之前加上"lib"前缀,尽管不是必须的。编译开关-fPIC代表函数符号可以重定向,-shared代表编译结果是一个标准对象。 
  不同于Win32DLL,Linux标准对象中的所有函数都是直接导出的,都可以被调用程序所访问。下面我们编写调用程序: 
//test.c
#include <stdio.h>
int main()
{
disp();
return 0;
}
编译:
gcc -o test test.c ./libmy.so
编译生成test可执行文件。如上编译条件的最后一条需要是所调用的标准对象文件名,注意必须含有路径。如果只是使用libmy.so,则必须确保这个文件在可访问的PATH下面。本例所使用的文件名"./libmy.so"是当前路径下的,使用了相对路径。 
 

发表于: 2008-04-13 ,修改于: 2008-04-13 13:11,已浏览126次,有评论0条 推荐 投诉


网友评论

发表评论