2013年7月29日
摘要: 后缀名“.dll .obj .lib”和“ .so .o .a”文件的区别含义2011-09-20 22:48:51| 分类: c/c++技术点滴 | 标签: |字号大中小订阅(1) .dll .obj .lib使用在windows平台下。 .dll:动态链接库,作为共享函数库的可执行文件。 .obj:目标文件,相当于源代码对应的二进制文件,未经重定位。 .lib:可理解为多个obj的集合,本质与.obj相同。 (2) .so .o .a使用在linux平台下。 .so:(share object)动态链接库,跟Windows平台类似。 .o: 目标文件,相当于源代码对应的二进制文件。 .a: 阅读全文
posted @ 2013-07-29 14:37 小乖乖~ 阅读(591) 评论(0) 推荐(0) 编辑
摘要: 【转】关于lib,dll,.a,.so,静态库和动态库的解释说明目录1 什么叫程序库2 什么是lib,什么是dll,什么是.a,什么是so,什么是静态库,什么是动态库3 补充说明4 作者什么叫程序库所谓程序库,一般是软件作者为了发布方便、替换方便或二次开发目的,而发布的一组可以单独与应用程序进行compile time或runtime链接的二进制可重定位目标码文件。通俗一点说,所谓一个库,就是一个文件,这个文件可以在编译时由编译器直接链接到可执行程序中,也可以在运行时由操作系统的runtime enviroment根据需要动态加载到内存中。一组库,就形成了一个发布包,当然,具体发布多少个库,完 阅读全文
posted @ 2013-07-29 14:36 小乖乖~ 阅读(961) 评论(0) 推荐(0) 编辑
摘要: 最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误:(.text+0x13): undefined reference to `func' 关于undefined reference这样的问题,大家其实经常会遇到,在此,我以详细地示例给出常见错误的各种原因以及解决方法,希望对初学者有所帮助。1. 链接时缺失了相关目标文件(.o) 测试代码如下: 然后编译。gcc -c test.c gcc –c main.c 得到两个 .o 文件,一个是 main.o,一个是 test.o ,然后我们链接 .o 得到可执行程序:gcc -o main ma 阅读全文
posted @ 2013-07-29 12:28 小乖乖~ 阅读(1139) 评论(0) 推荐(0) 编辑
  2013年3月26日
摘要: 在终端下输入make时出现“makefile:2: *** 遗漏分隔符 。 停止。”问题,原因是在编写makefile文件时: 3 : 3.c gcc -o 3 3.c gcc前的是tab分隔符,不能用空格,否则会出现“makefile:2: *** 遗漏分隔符 。 停止。”提示。。。 make中规定每一Shell命令之前的开头必须使用<tab>字符。 阅读全文
posted @ 2013-03-26 17:20 小乖乖~ 阅读(381) 评论(0) 推荐(0) 编辑
摘要: gcc 编译多个源文件一. 常用编译命令选项 假设源程序文件名为test.c。1. 无选项编译链接 用法:#gcc test.c 作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。2. 选项 -o 用法:#gcc test.c -o test 作用:将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。3. 选项 -E 用法:#gcc -E test.c -o test.i 作用:将test.c预处理输出test.i文件。4. 选项 -S 用法:#gcc -S test.i 作用:将预处理输出文件te 阅读全文
posted @ 2013-03-26 15:50 小乖乖~ 阅读(2669) 评论(0) 推荐(0) 编辑