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

请教关于Linux 下静态和动态链接库的几个问题

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

    本文导语:  事情起因:前些天实习的地方要求我做关于linux系统监听进程网络流量的模块,在网上找了nethogs这个工具的源代码,改动了其中一部分来适应我们的具体需求。目前这部分的编码工作已经完成,但是在集成到整个系统...

事情起因:前些天实习的地方要求我做关于linux系统监听进程网络流量的模块,在网上找了nethogs这个工具的源代码,改动了其中一部分来适应我们的具体需求。目前这部分的编码工作已经完成,但是在集成到整个系统中的时候却出现了麻烦:因为nethogs依赖与ncurses,pcap库,测试的时候我机器上安装了这几个包。我们老大要求我给他提交的是一个静态或者动态链接库,这个库打包了所有的源文件(包括依赖的),他自己的机器不用安装任何额外的包。然后我就不知道怎么办了,自己在网上看了好多,还是有很多疑惑,希望大家帮我解答一下,非常感谢:

1.静态链接库是编译阶段包含进来的,动态编译库是运行时加载,那么这二者到底有什么本质的区别,适用于什么场景,我这种情况用哪个比较好。

2.gcc中-L,-I,-lxxxx具体代表的意思是什么,另外gcc -static 和ar做成的静态链接库有什么区别

3.创建动态链接库或者静态链接库的方法中,如何引用这些依赖包(ncurses,pcap),目前已经有了这些库的.so文件,具体如何在makefile中写入

因为英语太差了,看了官方的说明文档,可还是一头雾水,最近也一直在补英语。

各位大哥大姐,帮帮我,实在是没头绪了,非常感谢,

|
gcc 链接的时候用-static就可以了吧
$ cat Makefile

all: demo_d demo_s

demo_d:
        gcc -o $@ demo.c         -lncurses

demo_s:
        gcc -o $@ demo.c -static -lncurses

clean:
        rm -f demo_s demo_d

$ make
gcc -o demo_d demo.c         -lncurses
gcc -o demo_s demo.c -static -lncurses

$ file demo_d demo_s
demo_d: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
demo_s: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, statically linked, for GNU/Linux 2.6.9, not stripped

$ ldd demo_d demo_s    
demo_d:
        linux-gate.so.1 =>  (0x00751000)
        libncurses.so.5 => /usr/lib/libncurses.so.5 (0x0457b000)
        libc.so.6 => /lib/libc.so.6 (0x00a0a000)
        libdl.so.2 => /lib/libdl.so.2 (0x00b7b000)
        /lib/ld-linux.so.2 (0x009ec000)
demo_s:
        not a dynamic executable

|
建议系统学习《程序员的自我修养—链接、装载与库.pdf》此书

    
 
 

您可能感兴趣的文章:

  • 请教大家linux下建立视频的服务器几个问题
  • Qt初学者请教大家几个问题!
  • 请教 Linux下安装ORACLE的几个问题
  • 请教几个问题?
  • 各位高手大家好,我是初学LINUX想请教几个问题
  • 请教 几个问题!!!!谢谢!!!
  • 初学Linux内核编译,几个问题请教一下
  • 请教一下unix下的几个问题
  • 请教VI的几个问题,谢谢
  • 关于硬盘安装radhat7.3的几个问题?请教大虾
  • 几个问题请教高手,没把握不要乱说哟!
  • 多系统引导程序的几个问题,请教???
  • 想请教shell编程几个问题
  • 初装linux,好几个问题要请教!
  • 请教几个问题
  • 请教一下linux系统中程序运行方式的几个问题
  • 我想学JAVA,有几个问题想请教大家。
  • 请教关于syslogd和printk的几个问题
  • 我是初学者,有几个问题,想请教各位高手,望不吝赐教
  • 这里有青岛的java程序员吗??有几个问题请教一下!(大送分)
  • 请教:(static)静态变量和静态方法是什么意思?
  • 请教一个使用静态库的问题
  • 请教一个gcc静态编译的问题。
  • 请教:java中如何调用linux下的静态连接库.a文件?
  • 请教:java中如何调用linux下的静态连接库.a文件?
  • 请教:java中如何调用linux下的静态连接库.a文件?
  • 请教如何生成包含动态链接的静态库文件
  • To masterz():本人愚笨,向你再请教一个问题 在静态上下文中不能引用非静态变量 this
  • jsp动态文件如何转换为*.shtml的静态页面呢?请教,急!!!!
  • 请教一个直接使用libxml2静态库的问题
  • 请教一个静态编译问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教关于动态链接库的问题
  • 请教高手!如何在bean中引入链接池?谢谢!
  • 请教高手!急!如何用java程序在链接中打开excel或word文档
  • 请教有关Linux动态链接库的问题
  • 请教linux9。0中使用动态链接库的问题
  • 请教!net-snmp里面怎么挂载自己定义的动态链接库
  • 请教各位,不知道/boot/下的System.map 和vmlinuz链接文件有什么用?!
  • 高分请教个链接错误!!!
  • 请教一个C链接MYSQl的问题,辣手
  • 【伸手党】请教如何删除当前路径下的所有软链接文件!不用递归。当前路径。
  • 请教一个软链接的问题
  • 100分请教u-boot.lds链接脚本的问题
  • 请教关于ld链接器的使用?
  • 请教 ld(链接器)的用法
  • 请教sed awk的用法详解,有命令说明的链接也不错,谢谢了
  • 请教大家一个关于linux下动态链接库的问题?
  • 请教:LINUX 如何将多个文件碎片链接成一个完整文件,而不是再拷贝一份数据~
  • 请教一段链接脚本
  • 请教loadrunner脚本运行后,Linux服务器上很多CLOSE_WAIT状态链接.
  • 请教个问题:linux内核中socket系统调用的几个方法如何将客户端和服务端链接起来的?
  • 请教,请教,这个问题是为什么????
  • 请教本地硬盘安装问题请教本地硬盘安装问题
  • ■请教■请教redhat最基本的问题!
  • 请教一个 shell 问题,我用下面这个 shell 语句总是失败,请教
  • 高分请教,各位大侠,请教一个问题,理论高手请进??谢谢
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 请教,请教,,,一定要看!!一定要看!!
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教象我这样的硬盘应如何安装Linux,我昨天试装了,但有问题。(老问题了,也看了前面的帖子,但还是来请教,请多指教)


  • 站内导航:


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

    ©2012-2021,