几种不同UNIX系统常用的动态连接库建立的参数说明

本文来自网络 ::URL::http://fangxinyan.spaces.live.com/blog/

几种不同UNIX系统常用的动态连接库建立的参数说明

创建共享库和链接可执行文件类似:首先把源代码编译成目标文件, 然后把目标文件链接起来.目标文件需要创建成 位置无关码(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 
or  
gcc -fpic -c foo.c 
gcc -shared -o foo.so foo.o 

技巧: 如果你想把你的扩展模块打包,用在更广的发布中,那么你应该考虑使用 GNU Libtool 制作共享库.它把平台之间的区别封装成 了一个通用的并且非常强大的接口.严肃的包还要求考虑有关库版本, 符号解析方法和一些其他的问题. 

Delphi 12.3 作为一款面向 Windows 平台的集成开发环境,由 Embarcadero Technologies 负责其持续演进。该环境以 Object Pascal 语言为核心,并依托 Visual Component Library(VCL)框架,广泛应用于各类桌面软件、数据库系统及企业级解决方案的开发。在此生态中,Excel4Delphi 作为一个重要的社区开源项目,致力于搭建 Delphi 与 Microsoft Excel 之间的高效桥梁,使开发者能够在自研程序中直接调用 Excel 的文档处理、工作表管理、单元格操作及宏执行等功能。 该项目以库文件与组件包的形式提供,开发者将其集成至 Delphi 工程后,即可通过封装良好的接口实现对 Excel 的编程控制。具体功能涵盖创建与编辑工作簿、格式化单元格、批量导入导出数据,乃至执行内置公式与宏指令等高级操作。这一机制显著降低了在财务分析、报表自动生成、数据整理等场景中实现 Excel 功能集成的技术门槛,使开发者无需深入掌握 COM 编程或 Excel 底层 API 即可完成复杂任务。 使用 Excel4Delphi 需具备基础的 Delphi 编程知识,并对 Excel 对象模型有一定理解。实践中需注意不同 Excel 版本间的兼容性,并严格遵循项目文档进行环境配置与依赖部署。此外,操作过程中应遵循文件访问的最佳实践,例如确保目标文件未被独占锁定,并实施完整的异常处理机制,以防数据损毁或程序意外中断。 该项目的持续维护依赖于 Delphi 开发者社区的集体贡献,通过定期更新以适配新版开发环境与 Office 套件,并修复已发现的问题。对于需要深度融合 Excel 功能的 Delphi 应用而言,Excel4Delphi 提供了经过充分测试的可靠代码基础,使开发团队能更专注于业务逻辑与用户体验的优化,从而提升整体开发效率与软件质量。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值