现在的位置: 首页 > 综合 > 正文

Windows环境下的GCC+VIM编程

2013年12月06日 ⁄ 综合 ⁄ 共 2386字 ⁄ 字号 评论关闭

本文转自:http://ynoooo.javaeye.com/blog/133474

 

用vim编写源代码,用gcc编译连结程序几乎已成为LINUX下程序设计的标准开发模式了,(当然emacs也是非常出色和流行的),本文教你如何在Windows下做到同样的事情。

gcc和vim都有支持不同平台的版本,win32也当然不例外。此外,配合不同的库像WINAPI、GTK+等可开发出GUI程序。

安装GCC

  gcc的官方主页(http://gcc.gnu.org)上好像有for win32的版本,但MinGW、CYGWin、Dev-C++、DJGPP等都集成了GCC win32版,以下以MinGW(Minimalist GNU For Windows)为例:到Sourceforge(http://sourceforge.net/project/showfiles.php? group_id=2435)下载一个MinGW-2.0.0-3.exe,然后安装,它包括了

  • GCC-3.2-core-20020817-1
  • binutils-2.13-20020903-1
  • mingw-runtime-2.2
  • w32api-2.0
  • gdb-5.1.1-1
  • make-3.79.1-20010722 (binary renamed as mingw32-make)

  最后把安装路径下的bin目录加至$PATH (和安装jdk时,调整path时一样的) (系统属性-->高级-->环境变量-->系统变量 中添加) 可以在命令行下打gcc -v来看看是否能正常运行。

安装VIM

  VIM针对Microsoft操作系统的版本很多,包括DOS16、Win32 DOS(9x)、Win32 Console(NT/2K/XP)、Win16 GUI、Win32 GUI等,真不愧是editor中的老大哥。

  官方网址: http://www.vim.org/ 或 vim.sourceforge.net (以VIM 6.1 for Win32 GUI(NT/2K/XP)为例。)

实战一下

  以一个经典得不能再经典的例子Hello World!来说明如何用vim和gcc来生成win32程序。(gcc的 命令和linux下是一样的。)


//hello.c
  #include <stdio.h> 
  static void my_print (char *); 
  main () 
  { 
  char my_string[] = "hello world!"; 
  my_print (my_string); 
  } 
  void my_print (char *string) 
  { 
  printf ("The string is %s
  ", string); 
  } 
</stdio.h>

用GCC编译连结运行:


 c:>gcc -g -o hello hello.c
  c:>hello
  The string is hello world!

关于gvim的介绍

gVim(Vi IMproved) Vim是Linux上的著名的文本编辑器,他是早年的Vi编辑器的加强版。这个gVim是windows版的,并且有了标准的windows风格的图形界 面,所以叫g(graphical)Vim。这是一个国际版本,会根据安装的平台自动选择相应语言包,支持中文及其各种编码,连界面也是中文的,请放心使 用。这个极具Unix特色和风格(simple is the best)的编辑器相信会给您带来不同的感受。

一. 常用编译命令选项
假设源程序文件名为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
作用:将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编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。输入./test执行程序。

8.编译使用C++ std库的程序
用法:#gcc test.cpp -o test -lstdc++
作用:将test.cpp编译链接成test可执行文件。-lstdc++指定链接std c++库。

二. 多源文件的编译方法

如果有多个源文件,基本上有两种编译方法:
[假设有两个源文件为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 -o testfun.o test.o -o test //将testfun.o和test.o链接成test

    以上两种方法相比较,第一中方法编译时需要所有文件重新编译,而第二种方法可以只重新编译修改的文件,未修改的文件不用重新编译。

抱歉!评论已关闭.