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

请教:多个文件如何生成动态链接库(.so)?

    来源: 互联网  发布时间:2016-02-06

    本文导语:  以前只是在程序中用一些现成的库,现在要把自己的多个文件封装成一个动态链接库,在网上找个找资料,基本都是说用如下命令: gcc -fPIC -shared -o libNAME.so file1.c file2.c 这些例子想对比较简单; 我现在要解决的...

以前只是在程序中用一些现成的库,现在要把自己的多个文件封装成一个动态链接库,在网上找个找资料,基本都是说用如下命令:
gcc -fPIC -shared -o libNAME.so file1.c file2.c
这些例子想对比较简单;

我现在要解决的问题是,我的程序对外只提供一个函数接口,但是呢,这个函数却需要调用很多我自己写的文件里面的函数。就是我程序中有很多源文件和头文件,我的Makefile是这样的:

test : subNodeList.o NodeList.o ParseXml.o bm.o distance.o   MatchKey.o TraitList.o Tree.o UpdateRule.o detect.o test.o
    gcc -o   test  subNodeList.o NodeList.o ParseXml.o bm.o distance.o   MatchKey.o TraitList.o Tree.o  UpdateRule.o detect.o test.o -lm  -lxml2
test.o : test.c
    gcc -I /usr/include/libxml2 -c -g  test.c
detect.o : detect.c detect.h
    gcc -I /usr/include/libxml2 -c -g detect.c
UpdateRule.o : UpdateRule.c UpdateRule.h
    gcc -I /usr/include/libxml2 -c -g UpdateRule.c
Tree.o: Tree.c Tree.h
    gcc -c -g Tree.c
TraitList.o: TraitList.c TraitList.h
    gcc -c -g TraitList.c
distance.o : distance.c distance.h
    gcc -c -g distance.c
MatchKey.o : MatchKey.c MatchKey.h
    gcc -c -g  MatchKey.c
bm.o : bm.c bm.h
    gcc -c -g  bm.c 
ParseXml.o: ParseXml.c ParseXml.h
    gcc -I /usr/include/libxml2 -c -g  ParseXml.c 
NodeList.o : NodeList.c NodeList.h
    gcc -c -g  NodeList.c 
subNodeList.o : subNodeList.c subNodeList.h
    gcc -c -g  subNodeList.c 
clean : 
    rm -rf *.o test

其中,detect.c中包括对外使用的函数接口,test.c里面就是一个main函数,调用这个函数接口,测试用的。

比如subNodeList.c,NodeList.c Tree.c 等都是我函数中用到的数据结构,而且其中还用到了其他的库。

我感觉文件依赖关系多,而且还调用了其他的库,不知该如何生成库,希望大家指点一下。谢谢!


|
在gcc -o里加上 -shared -Wl,-soname,libtest.so就可以了,其他不用改

gcc  -shared -Wl,-soname,libtest.so -o libtest.so subNodeList.o NodeList.o ParseXml.o bm.o distance.o   MatchKey.o TraitList.o Tree.o  UpdateRule.o detect.o test.o -lm  -lxml2


    
 
 

您可能感兴趣的文章:

  • 请教根据Makefile.am自动生成Makefile的问题
  • 请教各位高手,怎么才能使用XML生成一个数型菜单
  • 请教如何打包生成rpm包
  • 关于linux下生成so文件的问题,请教高手
  • [请教]嵌入式设备在windows下自动生成磁盘分区
  • 请教:在LINUX下如何编译生成这三个文件?高分相送
  • MAKEFILE自动生成依赖关系问题请教
  • 请教大虾,在Rose中怎么生成JAVA代码倒出?
  • 100分请教如何用diff生成patch
  • 请教如何生成包含动态链接的静态库文件
  • 高分请教,如何能够使GTK能够在gtk生成的窗口里面放一个其它程序的窗口?
  • 请教生成rpm的问题
  • 请教:如何在aix下生成 .so 文件。 急!
  • glade0.6.4生成的程序(最简单一个窗体)可是autogen.sh及make不过去,glade1.1.3能过去,可一编辑菜单就死,请教如何解决?
  • 请教如何通过循环生成控件?如何显示事件触发后生成的控件?可以这样写吗(见内)?谢谢!
  • 请教:javadoc 如何将一组包(并且包中还有子包)生成文档
  • 请教linux下管理多个socket用什么,难道只能用select?
  • 请教POSIX问题:一个进程中,可以有多个互斥锁麽?
  • 高分请教: 如何用Java调用带多个参数的EXE文件?
  • 请教bsh中如何echo出"aaaaaa bbbbb"这样中间有多个空格的字符串
  • 请教如何编程实现父进程产生多个子进程
  • 请教关于多个shell脚本后台运行的问题!
  • 请教大虾们:在shell脚本中如何用expr连续进行多个变量之间的计算
  • 请教:wc -l 多个文件如何不显示total这行
  • 请教:j2me空战游戏中多个敌人同时出现且进行相应操作和判决的实现
  • 请教:LINUX 如何将多个文件碎片链接成一个完整文件,而不是再拷贝一份数据~
  • 请教多个IP的socket转换连接很慢的问题
  • 请教含多个文件联编的makefile文件写法模板
  • 请教在solaris下,一动态库*.so动态链接多个静态库*.a时链接不正确
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教,请教,这个问题是为什么????
  • 请教本地硬盘安装问题请教本地硬盘安装问题
  • ■请教■请教redhat最基本的问题!
  • 请教一个 shell 问题,我用下面这个 shell 语句总是失败,请教
  • 高分请教,各位大侠,请教一个问题,理论高手请进??谢谢
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 请教,请教,,,一定要看!!一定要看!!
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教象我这样的硬盘应如何安装Linux,我昨天试装了,但有问题。(老问题了,也看了前面的帖子,但还是来请教,请多指教)
  • 请教这种循环的执行过程
  • 请教两个redhat9问题
  • 请教如何在指定目录下查找包含指定文字的文件
  • 请教局域网中如何通过ip地址得到主机名
  • 请教kdevelop的问题
  • 请教linux 下的adsl拨号问题.
  • 请教,如何用虚拟订机安装liux
  • 【请教】LINUX 下SNMP的MIB开发
  • 请教一个opengl的问题


  • 站内导航:


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

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

    浙ICP备11055608号-3