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

网易面试遇到的两个linux编程的难题

    来源: 互联网  发布时间:2016-05-07

    本文导语:  请教: 1、如果工程中只有.h文件改动,如何只编译需要编译的文件?makefile如何实现。 2、linux下,程序开始运行,若缺少动态库,会提示缺少什么库的信息,这个是如何实现? | 1. 主要就是要确立.c ...

请教:

1、如果工程中只有.h文件改动,如何只编译需要编译的文件?makefile如何实现。

2、linux下,程序开始运行,若缺少动态库,会提示缺少什么库的信息,这个是如何实现?


|
1. 主要就是要确立.c 和.h文件的依赖关系! 如果没有这个依赖关系,修改.h之后,包含该.h文件的.c是不会被编译的(除非你make clean);
   简单地,参考3楼的方法;

2. 缺少动态库的话,运行程序会提示如下信息: "当加载动态库libxxx.so的时候发生错误:原因是没有找到该动态库,不能打开";
   
   "error while loading shared libraries: libxxx.so: cannot open shared object file: No such file or directory"

   这个如何实现,主要是依赖于linux系统的加载器(ld.so, ld-linux.so*,详情可以man ld.so查看),加载器在加载一个程序运行的时候,
   会根据可执行程序里面的库信息,将所有的动态库先加载进入内存,如果找不到该动态库,那么就会打印上面的信息(这句信息是由ld.so,或者
   ld-linux.so*加载器打印出来的);

   good luck!

|
1、如3楼所说,加.h的头文件依赖
2、用动态库函数进行搜索如下路径
LD_LIBRARY_PATH 指定的路径
/etc/ld.so.conf 文件指定的路径
/lib 
/usr/lib
如果找不到,就报错

GNU 动态库函数
dlopen() //如果为空就表示出错,并打印出

因为目前linux上的可执行文件都是ELF格式的文件,ELF文件由一个ELF文件信息头和很多节构成 ,找出里面的动态库节,里面有该可执行文件依赖的动态库文件,再用上方法去解析

还可以再程序中用system()函数执行
readelf -d 可执行文件 | grep .*.so文件查看其依赖的动态库

|
1. 
obj: obj.cpp obj.h other.h
      g++ -c obj.cpp
2. 
try{
// load library
}catch(...)
{
}
没试验过。


    
 
 

您可能感兴趣的文章:

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












  • 相关文章推荐
  • 网易通行证的实现方法?
  • 网易前端JS框架 NEJ
  • 请问“网易通行证”是怎么一个架构?
  • 网易的MySQL数据库分支 InnoSQL
  • CoCreate2005下面使用Wine +QQ2004最新版+网易破泡泡
  • 请问新浪,网易,263上面的给手机发送图片,短信,铃声的Web是用什么做的?
  • 散分:为什么我的http代理程序就是不能上sina和网易邮箱的页面?
  • Redhat 9 中的Mozilla浏览器,在装了Flash 6 插件后进入新浪、网易等网页时会自动关闭?
  • 我怎么样用网易的邮件服务器??先看看我的jsp代码,然后告诉我哪里错了。
  • 网易游戏服务器开发框架 Pomelo
  • 谁能告诉我,做一个象网易那样的聊天室,用什么方法,不要告诉我是用数据库或读写文件,是不是用多线程,socket协议。来讨论者皆有分。
  • 仿网易新闻客户端头条ViewPager嵌套实例
  • 高仿网易新闻顶部滑动条效果实现代码


  • 站内导航:


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

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

    浙ICP备11055608号-3