【php精品源码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了php精品源码-【精品文档】C语言编译器MINGW的使用说明(整理) - 信息管理的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
在mingw环境中生成和使用dll都是十分方便的。
1.生成dll gccg -shared -o test.dll test.c 一直用VS看现在Eclipse很火便想弄一下玩玩用到了MINGW继而用到了GCC对GCC相当的不熟悉从头开始学一些简单的吧。
简单的GCC用法 gcc命令提供了非常多的命令选项但并不是所有都要熟悉初学时掌握几个常用的就可以了到后面再慢慢学习其它选项免得因选项太多而打击了学习的信心。
一. 常用编译命令选项 假设源程序文件名为test.c。
1. 无选项编译链接 用法gcc test.c 作用将test.c预处理、汇编、编译并链接形成可执行文件。
这里未指定输出文件默认输出为a.out。
编译成功后可以看到生成了一个a.out的文件。
在命令行输入./a.out 执行程序。
./表示在当前目录a.out为可执行程序文件名。
2. 选项 -o 用法gcc test.c -o test 作用将test.c预处理、汇编、编译并链接形成可执行文件test。
-o选项用来指定输出文件的文件名。
输入./test执行程序。
3. 选项 -E 用法gcc -E test.c -o test.i or 作用将test.c预处理输出test.i文件。
4. 选项 -S 用法gcc -S test.i 作用将预处理输出文件test.i汇编成test.s文件。
5. 选项 -c 用法gcc -c test.s 作用将汇编输出文件test.s编译输出test.o文件。
6. 无选项链接 用法gcc test.o -o test 作用将编译输出文件test.o链接成最终可执行文件test。
输入./test执行程序。
7. 选项-O 用法gcc -O1 test.c -o test 作用使用编译优化级别1编译程序。
级别为13级别越大优化效果越好但编译时间越长。
输入./test执行程序。
二. 多源文件的编译方法 如果有多个源文件基本上有两种编译方法 假设有两个源文件为test.c和testfun.c 1. 多个文件一起编译 用法gcc testfun.c test.c -o test 作用将testfun.c和test.c分别编译后链接成test可执行文件。
2. 分别编译各个源文件之后对编译后输出的目标文件链接。
用法 gcc -c testfun.c //将testfun.c编译成testfun.o gcc -c test.c //将test.c编译成test.o gcc testfun.o test.o -o test //将testfun.o和test.o链接成test 以上两种方法相比较第一中方法编译时需要所有文件重新编译而第二种方法可以只重新编译修改的文件未修改的文件不用重新编译。
1. gcc的家族成员 总的来说gcc应该是一个编译器。
可是为什么我还要在这里介绍gcc的家族成员呢其实整套的gcc环境并不是由gcc构成的他是由多个包所组成的。
这些包的互相作用产生了g gcc开发环境包括如下几大包 binary 基本包 提供基本的汇编器连接器等 gcc 基本包 各种语言的编译器包括CCAdaJava等 Win32apimingwi-runtime/glibc 基本包 系统函数库 make/automake 需要包 管理项目编译的程序 gdb 附加包 调试程序 2. gcc的常用编译参数 同VCTC等编译器不同gcc其实是可以很方便的在提示符下编译程序的。
gcc在提示符下编译程序并没有如同VC那样的冗长而晦涩的编译参数。
相反却有着比VC更灵活且简短的参数。
不得不承认不懂gcc编译参数的人确实会损失一些gcc的强大功能。
所以我下面简单介绍一下gcc的一些基本编译参数。
这里我以C编译器为例。
注意gcc的编译参数是区分大小写的。
编译二进制代码 gcc -c yours.c -o yours.o 使用这段指令gcc将会把yours.c编译成yours.o的二进制代码。
其中yours.o就类似于VCTC中的.obj文档。
编译最简单的小程序 gcc -o yours yours.c 通过这条指令gcc将会把yours.c源代码编译成名为yours的可执行程序。
当然您也可以将yours.c改成我们刚才介绍的yours.o文件。
这样gcc将使用编译刚才编译好的二进制文档来链接程序。
这里格式的特点是-o 后面是一串文件列表第一个参数是所编译程序的文件名从第二个开始就是您编译和连接该可执行程序所需要的二进制文档或者源代码。
编译时将自己的头文件目录设为默认头文件目录 gcc -I”Your_Include_Files_Document_Path” -c yours.c -o yours.o 这条指令中的-I参数将会把Your_Include_Files_Document_Path添加到你默认的头文件目录中。
这样您将可以使用 include 来导入头文件。
编译时使用自己的静态库存放目录 gcc -L”Your_Lib_Files_Document_Path” -o yours yours.o 这条指令将会让gcc在连接时除了在默认Lib存放目录中搜索指定的静态库以外还会在Your_Lib_Files_Document_Path中搜索。
编译时使用静态连接库 gcc -lyour_lib -o yours yours.o 这条指令将会让gcc在连接时把 libyour_lib.a中您所用到的函数连接到可执行程序中。
此处注意gcc所使用的静态连接库是lib.a格式的。
在连接时只且仅需要提供的内容就可以了。
编译时使用优化 gcc -O2 -c yours.c -o yours.o 使用优化方式编译程序其中除了-O2以外还有-O3 -O1等等。
他们代表不同的优化等级。
最常用的是-O2优化 编译时显示所有错误和警告信息 gcc -Wall -c yours.c -o yours.o gcc在默认情况下将对一些如变量申请未使用这样的问题或者申请了没有给予初始值的问题忽略。
但是如果使用了-Wall参数编辑器将列出所有的警告信息。
这样您就可以知道您的代码中有多少可能会在其他操作系统下出错的地方了。
用这个指令看看你的代码有多少地方写的不怎么合适。
编译连接时加入调试代码 gcc -g -o yours yours.c 正如同VC有debug编译模式一样gcc也有debug模式。
添加了-g 参数编译的可执行程序比普通程序略为大一些其中添加了一些调试代码。
这些代码将被gdb所支持。
连接时缩小代码体积 gcc -s -o yours yours.o 因为有人说Visual-MinGW生成的代码小于是研究了一下它的编译参数发现release模式的编译参数就加了这一项。
貌似编译后的代码的确缩小了很多。
反汇编 gcc -S yours.c 用这个指令能把C语言变成汇编语言不过不是常见的Intel语法而是ATT语法。
两者的语法有很大的区别。
获得帮助 gcc --help 这条指令从意思上就能看出获得gcc的帮助信息。
如果您有什么特殊需要也许这个指令能帮上点小忙。
总结 gcc的编译参数是可以组合起来的如 gcc yours.c -o yours -Wall -s -O2 预告下一篇将介绍用gdb调试C程序 MinGW入门1——搭建开发环境 半糖主义 发表于2008年02月10日 00:30 阅读178 评论1 分类 MinGW 举报 GCC是一个原本用于Unix系统下编程的编译器。
不过现在GCC也有了许多Win32下的移植版本。
所以也许对于许多Windows开发者来说GCC还是一个比较陌生的东西。
目前GCC在windows下有三个移植版本MinGW、Cygwin和Djgpp。
笔者对MinGW比较熟悉而其它2个没怎么用过。
本文主要讲述如何安装和配置MinGW。
MinGW是Minimalistic GNU for Windows 的缩写。
它是一个建立在GCC和binutils 项目上的编译器系统。
和其他GCC的移植版相比它可以说是最接近Win32的一个了。
因为MinGW几乎支持所有的Win32 API这也是MinGW的特色之一。
它所连接的程序不需要任何第三方库就可以运行了。
在某种程度上看MinGW更像是VC的替代品。
MinGW可以从http://www.mingw.org上获得。
要安装MinGW有两种方案 第一种方案手动安装 到http://sourceforge.net/project/showfiles.phpgroup_id2435下载以下几个压缩包。
考虑到文件的更新笔者只写出文件的主要部分省去文件的版本和更新日期注 gcc-coreC语言编译器目前有2、3、4三个版本推荐
上一篇:
基于Lucene的中文分词方法设计与实现
下一篇:
科研管理杂志简介