




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在mingw环境中生成和使用dll都是十分方便的。 1.生成dll gcc(g+) -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.ior 作用:将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构成的,他是由多个包所组成的。这些包的互相作用产生了gcc的开发环境。其中,有一些包是你开发应用程序所必备的基本包。离开这些包你将无法正常使用gcc。 gcc开发环境包括如下几大包: binary 基本包 提供基本的汇编器,连接器等 gcc 基本包 各种语言的编译器,包括C,C+,Ada,Java等 Win32api,mingwi-runtime/glibc 基本包 系统函数库 make/automake 需要包 管理项目编译的程序 gdb 附加包 调试程序 2. gcc的常用编译参数 同VC,TC等编译器不同,gcc其实是可以很方便的在提示符下编译程序的。gcc在提示符下编译程序,并没有如同VC那样的冗长而晦涩的编译参数。相反,却有着比VC更灵活且简短的参数。 不得不承认,不懂gcc编译参数的人,确实会损失一些gcc的强大功能。所以,我下面简单介绍一下gcc的一些基本编译参数。这里,我以C编译器为例。 注意:gcc的编译参数是区分大小写的。 编译二进制代码 gcc -c yours.c -o yours.o 使用这段指令,gcc将会把yours.c编译成yours.o的二进制代码。其中,yours.o就类似于VC,TC中的.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优化。当然,还有针对特殊CPU的优化,这里就不介绍了。 编译时显示所有错误和警告信息 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语法,而是AT&T语法。两者的语法有很大的区别。 获得帮助 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可以从上获得。 要安装MinGW有两种方案: 第一种方案:手动安装 到/project/showfiles.php?group_id=2435下载以下几个压缩包。考虑到文件的更新,笔者只写出文件的主要部分,省去文件的版本和更新日期(注:带有src表示源代码)。 gcc-core:C语言编译器,目前有2、3、4三个版本,推荐使用最新的。 gcc-g+:C+语言编译器,版本同上。(可选) binutils:MinGW的汇编器和连接器等基础工具。 mingw32-make:Make工具,用以管理你的项目。 gdb:MinGW调试器。 win32api:win32的API函数头文件和连接库 mingw-runtime:MinGW的运行时库 把以上的压缩包解压到一个目录中,如F:MinGW。 注:MinGW还包括一个MSYM(Minimal SYStem)。这个工具是用来模仿Unix Shell,它可以把Unix上的命令转换成Windows命令,如果习惯Unix可以下载这个工具。 把MinGW的目录 F:MinGWbin 添加进%PATH%环境变量中,可以在系统属性那里永久设置,或者建一个bat文件,写入以下字符: set Path=%PATH%;FMinGWbin 然后进入DOS运行这个bat文件即可。 最后在MS-DOS环境下运行: gcc -v 如果显示类似下面一段GCC的版本信息,说明你安装的MinGW能正常工作了。 C:gcc -v Using built-in specs. Target: mingw32 Configured with: ./gcc-4.2.1/configure -with-gcc -enable-libgomp -host=mingw32 -build=mingw32 -target=mingw32 -program-suffix=-sjlj -with-arch=i486 -with-tune=generic -disable-werror -prefix=/mingw -with-local-prefix=/mingw -enable-threads -disable-nls -enable-languages=c,c+,fortran,objc,obj-c+,ada -disable-win32-registry -enable-sjlj-exceptions -enable-libstdcxx-debug -enable-cxx-flags=-fno-function-sections -fno-data-sections -enable-version-specific-runtime-libs -disable-bootstrap Thread model: win32 gcc version 4.2.1-sjlj (mingw32 sjlj-unwind) 第二种方案:自动安装 到/project/showfiles.php?group_id=2435下载MinGW-x.x.x.exe。安装过程它会自动从网上下载相应的文件,并自动配置好环境。相信对于Windows下的开发人员没什么问题了。 在2种安装方法,笔者偏爱第一种。因为控制度高,比较自由,要更新什么文件直接下载覆盖即可。第二种方案还有一个缺点,就是它下载的文件可能不是最新的。 这样,你就可以在任何目录下使用MinGW了。 后记:想当初笔者自己在安装配置Mi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 音乐b级考试试题及答案
- 仪表培训考试试题及答案
- 六一周系列活动方案
- 六一外卖联动活动方案
- 六一教育教学活动方案
- 医学超声考试试题及答案
- 六一活动亲子diy活动方案
- 六一活动接球活动方案
- 六一活动评比活动方案
- 六一童装活动方案
- 2025中考英语书面表达终极押题(附范文)
- 2025年继续教育公需课必修课考试题库附含参考答案
- 《乡村振兴战略课件》课件
- 【MOOC】国际商务-暨南大学 中国大学慕课MOOC答案
- 【MOOC】大学物理-力学、电磁学-重庆大学 中国大学慕课MOOC答案
- 2024中考英语1500词汇默写汇总表练习(含答案)
- 中国物流与采购联合会采购与供应链管理专业委员会简介
- 5人防测量温州市综合测绘成果报告书(范本)
- 国家开放大学电大专科《宪法学》2024期末试题及答案
- 死亡证明(模板)
- 申根签证在职证明模板中英双语
评论
0/150
提交评论