2013年7月29日
摘要: 一:编译过程的4个阶段:预处理,编译,汇编,链接; 1:最常用的方式 gcc hello.c -o hello 2:预处理后停止编译 gcc -E hello.c -o hello.i(.i通常为已经预处理过的C原始程序) 3:将hello.i编译为目标代码,可以使用-c参数来完成 gcc -c hello.i -o hello.o 也可以使用-x参数让gcc从指定的步骤开始. 4:将生成的目标文件链接成可执行文件 gcc hello.o -o hello 5:多个源文件时 gcc f1.c f2.c -o file 二:gcc参数的警告提示功能 1:-pedantic 使用了ANSI/ISO 阅读全文
posted @ 2013-07-29 15:06 小乖乖~ 阅读(454) 评论(0) 推荐(0) 编辑
摘要: 后缀名“.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) 编辑