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

makefile中调用共享库顺序的问题

    来源: 互联网  发布时间:2017-05-25

    本文导语:  问题的提出:        最近在Linux下操作xml时,用到网上很流行的tinyxml库,但为了操作的方便,编写了一个库对tinyxml库进行了封装,且起名为dansirxml。dansirxml共享库很简单,就一个CDanSirXml类,分为dansirxml.cpp和dansirx...

问题的提出:

       最近在Linux下操作xml时,用到网上很流行的tinyxml库,但为了操作的方便,编写了一个库对tinyxml库进行了封装,且起名为dansirxml。dansirxml共享库很简单,就一个CDanSirXml类,分为dansirxml.cpp和dansirxml.h两个文件。自己编写makefile文件生成
libdansirxml.so共享库了。由于libdansirxml.so共享库是对libtinyxml.so库的封装,即libdansirxml.so共享库依赖于libtinyxml.so库的。在主程序的makefile文件中调用libdansirxml.so共享库,如下:
MYLIBS        =  -L../../../../OldProj/cs/mptmsu/lib -lsqlite3 -llog4cplus  -ltinyxml  -ldansirxml 
即将libtinyxml.so共享库放在libdansirxml.so的前面,则make主程序时,会出现找不到libtinyxml.so库中的很多东东的连接错误,但如果将libdansirxml.so和libtinyxml交换下顺序,即将上面的一行改成如下所示:
MYLIBS        =  -L../../../../OldProj/cs/mptmsu/lib -lsqlite3 -llog4cplus  -ldansirxml  -ltinyxml
则make主程序时不会出错,这是为何呢?在主程序中调用外部共享库时有顺序要求吗?如果有的话,顺序的规则是咋样的呢?

|
gcc手册:

-llibrary
-l library
Search the library named library when linking. (The second alternative with the library as a separate argument is only for POSIX compliance and is not recommended.)
It makes a difference where in the command you write this option; the linker searches and processes libraries and object files in the order they are specified. Thus, ‘foo.o -lz bar.o’ searches library ‘z’ after file foo.o but before bar.o. If bar.o refers to functions in ‘z’, those functions may not be loaded.


|


Classic question...

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












  • 相关文章推荐
  • 急!!!怎样写共享库的MAKEFILE文件?
  • Makefile.in,Makefile.am,Makefile.bor应该怎么用?
  • makefile.am和makefile.in是什么文件,与makefile有什么联系吗?
  • 最近在学习linux C 看到了makefile部分,觉得makefile的语法很难理解,Makefile 的语法是不是shell语法?
  • 求解makefile问题,makefile.conf的作用?
  • 从网上载了个C++程序的源代码,包含38个.cpp和.h,还有makefile.in和makefile.am两个文件,但无configure和makefile.请问怎么编译?谢谢!
  • 有makefile.am,有 makefine.in 为什么就是没有Makefile?
  • 请教根据Makefile.am自动生成Makefile的问题
  • 网络技术 iis7站长之家
  • 【急!】一个程序里有好多文件夹里都有Makefile,如何找到最管用的makefile
  • 【makefile使用】请问怎样在shell中获取makefile的最终目标?
  • unix下面make makefile文件,提示“makefile is up-to-date",怎么办呀?
  • Makefile使用遇到的问题!"Makefile:3:missing the separator.stop"在线等待.......
  • Makefile是如何输出执行的路径的,表示执行的是那个Makefile
  • 下的tar.gz源码里只有makefile.in和makefile.am
  • 一句 makefile 的解释 -- makefile 与 shel 结合
  • linux makefile error :Makefile:335: *** commands commence before first target。
  • [test@localhost ~]$ cat <makefile >catfile 跟cat > catfile <makefile是一样的吧?
  • 关于makfile,makefile.in, makefile.am. configure之间的关系
  • win32下编译Linux 下的项目(makefile.am和makefile.in)
  • 关于makefile的问题。一个makefile如何生成两个可执行文件。


  • 站内导航:


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

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

    浙ICP备11055608号-3