中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > C/C++
如何编译动态库
作者:未知 时间:2005-09-13 19:28 出处:ChinaUnix.net 责编:chinaitpower
              摘要:如何编译动态库

我源文件为main.c, x.c, y.c, z.c,头文件为x.h,y.h,z.h
如何编译成.so动态库?
编译器用gcc
最好能给出详细参数解释,谢谢

 bluesoho 回复于:2004-07-25 10:52:14
# 声称动代连接库,假设名称为libtest.so
gcc x.c y.c z.c -fPIC -shared -o libtest.so

# 将main.c和动态连接库进行连接生成可执行文件
gcc main.c -L. -ltest -o main

# 输出LD_LIBRARY_PATH环境变量,一边动态库装载器能够找到需要的动态库
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.

# 测试是否动态连接,如果列出libtest.so,那么应该是连接正常了
ldd main

# 执行就不用说了吧

--------------------------------------------------
建议创建一个Makefile来作这些事情。

 bluesoho 回复于:2004-07-25 11:00:29
-fPIC:表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的所以动态载入时是通过代码拷贝的方式来满足不同进程的需要,而不能达到真正代码段共享的目的。

-L.:表示要连接的库在当前目录中

-ltest:编译器查找动态连接库时有隐含的命名规则,即在给出的名字前面加上lib,后面加上.so来确定库的名称

LD_LIBRARY_PATH:这个环境变量指示动态连接器可以装载动态库的路径。
当然如果有root权限的话,可以修改/etc/ld.so.conf文件,然后调用
/sbin/ldconfig来达到同样的目的,不过如果没有root权限,那么只能采用输出LD_LIBRARY_PATH的方法了。

 闲聊101306 回复于:2004-07-25 11:01:59
十分感谢

 eagerly1 回复于:2004-07-25 20:39:00
收藏了

 jsean 回复于:2004-07-27 13:05:07
收藏!

 FH 回复于:2004-07-27 13:19:14
什么呀,就收藏?对么?环境是什么?编译器是什么?连接器又是什么?

 kurapikar 回复于:2004-07-27 13:21:42
想问个问题 连接器是指?

 jsean 回复于:2004-07-28 12:26:03
[quote:3b1e7e4aad="FH"]什么呀,就收藏?对么?环境是什么?编译器是什么?连接器又是什么?[/quote:3b1e7e4aad]

FH给大家一个更有说服力和更有收藏价值的相关说明吧,先谢了,呵呵

 FH 回复于:2004-07-28 13:14:11
最有价值的就是在你自己的环境下:
man cc/gcc/...
man makefile
man make

因为上文所说的各个参数,对不同的环境可能是完全不一样的。

顺便说一下,连接器是ld。

 roking 回复于:2004-07-28 15:29:02
好帖子,支持:)
但是我看好多书上都写着要在/etc/ld.so.conf 里要配置一下,不知道是什么意思,因为我在solaris8上没有找到这个文件,能解释一下吗??

谢谢:)

 hzluly 回复于:2004-07-28 23:26:30
bluesoho,不错

 bluesoho 回复于:2004-07-29 00:47:05
[quote:9801265724="hzluly"]bluesoho,不错[/quote:9801265724]

谢谢!
我也是beginner, 各位高位清多指教

 FH 回复于:2004-07-29 10:30:54
[quote:1428186b54="jsean"]

FH给大家一个更有说服力和更有收藏价值的相关说明吧,先谢了,呵呵[/quote:1428186b54]
其实,花点功夫在精华区里找一下,就有各种环境的选项说明的。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有