电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

linux下的静态库与动态库的区别,Gdb调试段错误,自动生成MakefileVIP免费

linux下的静态库与动态库的区别,Gdb调试段错误,自动生成Makefile_第1页
1/7
linux下的静态库与动态库的区别,Gdb调试段错误,自动生成Makefile_第2页
2/7
linux下的静态库与动态库的区别,Gdb调试段错误,自动生成Makefile_第3页
3/7
linux 下的静态库与动态库的区别 1 .什么是库 在windows 平台和linux 平台下都大量存在着库。 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。 由于 windows 和linux 的本质不同,因此二者库的二进制是不兼容的。 2.库的种类 linux 下的库有两种:静态库和共享库(动态库)。 二者的不同点在于代码被载入的时刻不同。 静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。 共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小。 3.库存在的意义 库是别人写好的现有的,成熟的,可以复用的代码,你可以使用但要记得遵守许可协议。 现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。 共享库的好处是,不同的应用程序如果调用相同的库,那么在内存里只需要有一份该共享库的实例。 4.库文件是如何产生的在linux 下 静态库的后缀是.a,它的产生分两步 Step 1.由源文件编译生成一堆.o,每个.o 里都包含这个编译单元的符号表 Step 2.ar 命令将很多.o 转换成.a,成文静态库 动态库的后缀是.so,它由 gcc 加特定参数编译产生。 例如: $ gcc -fPIC -c *.c $ gcc -shared -Wl,-soname, libfoo.so.1 -o libfoo.so.1.0 *. 5.库文件是如何命名的,有没有什么规范 在linux 下,库文件一般放在/usr/lib /lib 下, 静态库的名字一般为 libxxxx.a,其中 xxxx 是该 lib 的名称 动态库的名字一般为 libxxxx.so.major.minor,xxxx 是该 lib 的名称,major 是主版本号, minor 是副版本号 6.如何知道一个可执行程序依赖哪些库 ldd 命令可以查看一个可执行程序依赖的共享库, 例如# ldd /bin/lnlibc.so.6 => /lib/libc.so.6 (0× 40021000)/lib/ld-linux.so.2 => /lib/ld- linux.so.2 (0× 40000000) 可以看到 ln 命令依赖于 libc 库和ld-linux 库 Gdb调试段错误 1.段错误是什么 段错误是指访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址、访问了系统保护的内存地址、访问了只读的内存地址等等情况。 2 .段错误产生的原因 访问不存在的内存地址 #include #include void main() { int *ptr = NULL; *ptr = 0; } 访问系统保护的内存地址 #include #include

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

linux下的静态库与动态库的区别,Gdb调试段错误,自动生成Makefile

确认删除?
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群