linux的可执行文件中的几个待解决的问题

1、动态链接库的原理?也就是他是怎么开始运行的

   这个问题基本解决,

  事实上,动态链接库产生的原因就是很多程序有相同的代码,为了防止代码的重复出现而占满硬盘,所以创造了动态链接库,这样相同的代码只有一份在硬盘,在使用的时候调入内存,大家共用,节省磁盘空间

  动态链接库的本质就是写好的一些函数,给你调用,但是你看不到函数的实现,却能调用它,这就是加载器的魅力

2、怎么生成.so格式的动态链接库

   这个总结挺好的:(在《LINUX系统中动态链接库的创建与使用》一文中看到)一是如何让动态链接库为LINUX系统所共享,二是编译连接程序时如何做.让动态链接库为系统所共享,主要是用ldconfig管理命令,维护好系统共享库的缓存文件/etc/ld.so.cache.编译连接时如何做?注意连接上所用的动态链接库就可以了

  《LINUX系统中动态链接库的创建与使用》原创地址,找的我好辛苦啊亲

    1、http://blog.chinaunix.net/uid-23480159-id-2421732.html

    2、http://blog.chinaunix.net/uid-23480159-id-2421733.html  

 

使用方法这里也讲的比较清晰:http://fanqiang.chinaunix.net/system/linux/2006-05-08/4126.shtml

3、一个可执行程序执行的时候需要有哪些动态链接库

  查看,readelf -a test   (test为可执行文件),可查看相当多的信息

  

 

4、查看可执行文件的相关信息 

  ldd <可执行文件名>       查看可执行文件链接了哪些  系统动态链接库
  nm <可执行文件名>       查看可执行文件里面有哪些符号
  strip <可执行文件名>      去除符号表可以给可执行文件瘦身
  如果我们想从可执行程序里面提取出来一点什么文本信息的话,还可以用strings命令
  strings <可执行文件名>


 

posted @ 2013-04-27 19:06  stephen@liu  阅读(366)  评论(0)    收藏  举报