当前位置:  技术问答>linux和unix

(在线等待)如果把一个静态库整体编进一个动态库?

    来源: 互联网  发布时间:2015-09-01

    本文导语:  由于这个项目是和别人一起开发,他们只负责提供目标文件给我们,然后由我们这边把我们编译的目标文件和他们的目标文件生成动态库提供给别人使用,但现在发现一个问题:如果我们直接用他们的libstatic.a生成动...

由于这个项目是和别人一起开发,他们只负责提供目标文件给我们,然后由我们这边把我们编译的目标文件和他们的目标文件生成动态库提供给别人使用,但现在发现一个问题:如果我们直接用他们的libstatic.a生成动态库libnormal.so,结果非常的不正常。
假设:现在有libstatic.a,还有xyz.c,libstatic.a会调用xyz.c中的内容。先把xyz.c编译成xyz.o,然后直接用命令gcc -shared -olibstaticbase.so -lstatic xyz.o生成libstaticbase.so,但是发现并不是libstatic.a中所有的内容都进入了libstaticbase.so。
但是如果把libstatic.a用ar x解压,然后用命令gcc -shared -olibnormal.so a.o b.o c.o ... xyz.o生成libnormal.so,结果非常正常,也就是说所有libstatic.a中的函数都进入了libnormal.so。libstaticbase.so和libnormal.so大小相差很大。

简而言之,如果我用静态库无法生成包含所有他的内容的动态库,但如果解压后用目标文件生成动态库,则一切正常。我想gcc应该有这样的选项,但是不知道是什么,请各位大虾赐教。

另外,我之所以要这么作,是因为我们要交叉编译到很多平台,如果我在Makefile里用*.o,那么以后Makefile的维护是个大问题,如果直接Makefile中用他们的.a文件,那么以后开发要简单的多。

在线等候!

|
可以使用这样看看
gcc -shared -olibnormal.so `ar x libstatic.a` xyz.o

不过我记得编译成动态库的时候在将c文件编译为文件时候要指定-fPIC选项,
要不然可能会有时候出现问题,所以最好的办法是要求他们提供一个动态库
而不是提供一个静态库。

欢迎访问我的个人网站 www.linuxc.net

|
呵呵,其实和ar x 出来所有的.o再编译是一样的。
不过,如果.o不是用-fPIC编译出来的话,很可能.so在使用中会有问题。
同意hoyt(hoyt(欢迎访问 www.linuxc.net)) 的看法,最好是让他们提供动态库。

|
use a perl script to get the .o list?

|
mark,学习

|
gz

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 简单的输入输出问题 在线等待 在线给分
  • 怎么用能让asp实现统计在线人数的功能。在线等待!!!帮忙送分!
  • 100分,等待,在线等待:防火墙问题?
  • 60分,求知JBuilder的CD-KEY! 在线等待
  • 新手上路,请多关照!如何查看启动日志????在线等待!!
  • 急救:关于BLOB数据类型---在线等待,高分相送!
  • 在线等待,gcc的网址是什么??
  • 哪儿有bes5下载,在线等待。下载成功再送299分!!!
  • 求UNIXWARE7.11的原版下载,高分相赠,在线等待!!!
  • 请问哪里有dm5sum可以下载?在线等待!!
  • 如何调用其他程序,比如说"notepad.exe",在线等待,急!
  • jsp小问题(在线等待)
  • 在线等待!cmp的问题
  • 怎么样调整文本框的大小?在线等待!
  • 谁有Disk Manager这款软件的使用说明书。?????????急用,在线等待。。
  • gtk和montif的区别,在线等待
  • 在线等待-设备文件/dev/ttyS0 是不是对应于串行端口?
  • 谁知道javascript的调试工具!!!--在线等待
  • 新手的求助,高分,在线等待
  • 急!急!!急!!!如何将键盘输入的字符读入程序中???---在线等待---
  • 基于Html5的mockups在线工具简介
  • 装MYSQL后启动错误! mysqld ended --在线急等!在线急等!在线急等!在线急等!-----
  • MyEclipse SVN插件SubEclipse 在线离线等几种安装方式介绍
  • 智能在线表单设计器 FreeForm智能在线表单设计器
  • Linux使用群24032501,保持20人在线,目标50人在线
  • 在线求教, 为什么不能开始除root之外的用户登录??...很急, 在线等
  • 在线等,在线给分!(简单问题,急)
  • java/j2ee iis7站长之家
  • 在线等,在线给分!!!!!!!!!!
  • 在线求助!关于如何使用“信号”的方式来响应键盘按下的消息!在线急盼回复!
  • 如何判断在线用户,主要是如何判断用户关闭所有窗口(即他已经不在线了)?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3