博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux 静态链接库与动态链接库之二:动态链接库生成
阅读量:4103 次
发布时间:2019-05-25

本文共 700 字,大约阅读时间需要 2 分钟。

动态链接库是一种通用的软件组件技术,是多种操作系统中提供基本服务的方式。比如Win32内核就是3个DLL文件构成。这种技术在Linux操作系统下也有对应的实现,就是Linux标准对象Standard Ojbect,对应的文件扩展名为.so。

      下面通过一个简单的例子开始介绍Linux标准对象。

void show()

{

  printf("Standard Object by gashero/n");

}

保存为myso.c文件,按照如下编译: $ gcc -fPIC -shared -o libmyso.so myso.c 。

执行生成一个libmyso.so文件,按照Linux标准对象的命名惯例,应该在库名称之前加上"lib"前缀,尽管不是必须的。编译开关-fPIC代表函数符号可以重定向,-shared代表编译结果是一个标准对象。

      下面我们编写调用程序:

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

参考原文:

转载地址:http://nbbsi.baihongyu.com/

你可能感兴趣的文章
Servlet的生命周期
查看>>
JAVA八大经典书籍,你看过几本?
查看>>
《读书笔记》—–书单推荐
查看>>
【设计模式】—-(2)工厂方法模式(创建型)
查看>>
有return的情况下try catch finally的执行顺序(最有说服力的总结)
查看>>
String s1 = new String("abc"); String s2 = ("abc");
查看>>
JAVA数据类型
查看>>
Xshell 4 入门
查看>>
SoapUI-入门
查看>>
Oracle -常用命令
查看>>
JAVA技术简称
查看>>
ORACLE模糊查询优化浅谈
查看>>
2016——个人年度总结
查看>>
2017——新的开始,加油!
查看>>
【Python】学习笔记——-6.2、使用第三方模块
查看>>
【Python】学习笔记——-7.0、面向对象编程
查看>>
【Python】学习笔记——-7.1、类和实例
查看>>
【Python】学习笔记——-7.2、访问限制
查看>>
【Python】学习笔记——-7.3、继承和多态
查看>>
【Python】学习笔记——-7.4、获取对象信息
查看>>