UNIX—LIKE系统常用创建动态库的方法
来源:互联网 发布:.net crm 源码下载 编辑:程序博客网 时间:2024/05/20 11:26
UNIX—LIKE系统常用创建动态库的方法
创建共享库和链接可执行文件类似:首先把源代码编译成目标文件,然后把目标文件链接起来.目标文件需要创建成 位置无关码(position-independent code)(PIC),概念上就是在可执行程序装载它们的时候, 它们可以放在可执行程序的内存里的任何地方,(用于可执行文件的目标文件通常不是用这个方式编译的.) 链接动态库的命令包含特殊标志,与链接可执行文件的命令是有区别的. --- 至少理论上如此.在一些系统里的现实更恶心.
在下面的例子里,我们假设你的源程序代码在 foo.c 文件里并且将创建成名字叫 foo.so的共享库。中间的对象文件将叫做 foo.o,除非我们另外注明.一个共享库可以 包含多个对象文件,不过我们在这里只用一个.
BSD/OS
创建 PIC 的编译器标志是 -fpic.创建共享库的链接器标志是 -shared.
gcc -fpic -c foo.c
ld -shared -o foo.so foo.o
上面方法适用于版本 4.0 的 BSD/OS.
FreeBSD
创建 PIC 的编译器标志是 -fpic.创建共享库的链接器标志是 -shared.
gcc -fpic -c foo.c
gcc -shared -o foo.so foo.o
上面方法适用于版本 3.0 的 FreeBSD.
HP-UX
创建 PIC 的系统编译器标志是 +z.如果使用 GCC 则是 -fpic. 创建共享库的链接器标志是 -b.因此
cc +z -c foo.c
或
gcc -fpic -c foo.c
然后
ld -b -o foo.sl foo.o
HP-UX 使用 .sl 做共享库扩展,和其它大部分系统不同.
IRIX
PIC 是缺省,不需要使用特殊的编译器选项. 生成共享库的链接器选项是 -shared.
cc -c foo.c
ld -shared -o foo.so foo.o
Linux
创建 PIC 的编译器标志是 -fpic.在一些平台上的一些环境下, 如果 -fpic 不能用那么必须使用-fPIC. 参考 GCC 的手册获取更多信息. 创建共享库的编译器标志是 -shared.一个完整的例子看起来象:
cc -fpic -c foo.c
cc -shared -o foo.so foo.o
NetBSD
创建 PIC 的编译器标志是 -fpic.对于 ELF 系统, 带 -shared 标志的编译命令用于链接共享库. 在老的非 ELF 系统里,使用ld -Bshareable.
gcc -fpic -c foo.c
gcc -shared -o foo.so foo.o
OpenBSD
创建 PIC 的编译器标志是 -fpic. ld -Bshareable 用于链接共享库.
gcc -fpic -c foo.c
ld -Bshareable -o foo.so foo.o
Solaris
创建 PIC 的编译器命令是用 Sun 编译器时为 -KPIC 而用 GCC 时为 -fpic.链接共享库时两个编译器都可以用 -G 或者用 GCC 时还可以是 -shared.
cc -KPIC -c foo.c
cc -G -o foo.so foo.o
或
gcc -fpic -c foo.c
gcc -G -o foo.so foo.o
Tru64 UNIX
PIC 是缺省,因此编译命令就是平常的那个. 带特殊选项的 ld 用于链接:
cc -c foo.c
ld -shared -expect_unresolved '*' -o foo.so foo.o
用 GCC 代替系统编译器时的过程是一样的;不需要特殊的选项.
UnixWare
SCO 编译器创建 PIC 的标志是-KPIC,GCC 是 -fpic. 链接共享库时 SCO 编译器用 -G 而 GCC 用-shared.
cc -K PIC -c foo.c
cc -G -o foo.so foo.o
或者
gcc -fpic -c foo.c
gcc -shared -o foo.so foo.o
- UNIX—LIKE系统常用创建动态库的方法
- Unix-like系统的文件权限
- unix like系统的android反编译工具
- UNIX Like系统学习的要求
- 类UNIX系统(Unix-like)
- 几种不同UNIX系统常用的动态连接库建立的参数说明
- 几种不同UNIX系统常用的动态连接库建立的参数说明
- 操作Unix系统常用的几个方法与命令
- DOM对象的常用方法(特别是动态创建)
- jQuery动态创建html元素的常用方法汇总
- jQuery动态创建html元素的常用方法汇总
- jQuery动态创建html元素的常用方法使用心得
- jQuery动态创建html元素的常用方法汇总
- runtime 创建动态类及常用方法的介绍
- PHP基础学习:数组的创建和常用系统方法
- unix系统vi中常用的命令
- 常用的UNIX系统调用命令
- Unix系统中常用的信号含义
- (十九)冲动是魔鬼 - 8
- :“Failed to access IIS metabase”解决方法
- 在INFORMIX环境下,向已存在的数据表增加字段并调整数据表primary key约束的操作流程
- 我的七个建议
- 抠图技巧:十余种方法任你挑!
- UNIX—LIKE系统常用创建动态库的方法
- (十九)冲动是魔鬼 - 9
- 关于人像修饰与磨皮
- InputStream to Byte[]
- 应用开发中的异常处理的一些疑问
- cas 单点登录配置速成
- java定时定点执行任务
- (十九)冲动是魔鬼 - 10
- 用VC 设计窗体探测器(句柄)