GCC与MinGW的简单安装与使用
来源:互联网 发布:市场行情专业版数据 编辑:程序博客网 时间:2024/05/20 14:16
简单的GCC用法
总的来说,gcc应该是一个编译器。但整套的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
作用:将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执行程序。
二. 多源文件的编译方法
如果有多个源文件,基本上有两种编译方法:
[假设有两个源文件为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
以上两种方法相比较,第一中方法编译时需要所有文件重新编译,而第二种方法可以只重新编译修改的文件,未修改的文件不用重新编译。
三. gcc的常用编译参数
------------------------------------------------------------------------------
MinGW搭建开发环境
------------------------------------------------------------------------------
MinGW的使用
这部分将给出MinGW下gcc/g++开发程序详细例子。在讨论例子使用之前,我们需要对MinGW安装后的结果做个小小的改动。进入MinGW的安装目录,如C:\MinGW,找到bin目录下mingw32-make.exe,将其更名为make.exe(完成该改动后可以直接使用make来操作makefile)。
这里开始正式讨论MinGW的使用,分为5 个步骤:(假设在D:\project下开发,后续本节中文件建立均在该目录下操作)
本节将会分别创建三个文件:cmnd.bat, makefile, main.cpp。
第一步建立 MinGW的gcc/g++的自动搜索路径BAT 文件
创建一个文本文件,输入以下方框内的内容:
set path=C:\mingw\bin;%PATH%;
cmd
保存好后,把文件名字改为:cmnd.bat
第二步创建makefile
创建一个文本文件,输入以下方框内的内容(可从本文中拷贝粘贴):
# makefile for MinGW Hello World Test
# @copyright 2007/05/01 by zenf
CC = g++
AR = ar
LD = ld
RM = del
#RM = rm -rf
MV = MOVE /Y
CP = copy
C++FLAGS = -g -Wno-deprecated -Wall -Werror -I.
OBJ_LIST = $(subst .cpp,.o,$(wildcard *.cpp))
TARGET = main.exe
all: depend.dep $(TARGET)
$(TARGET): $(OBJ_LIST)
$(CC) -o $(TARGET) $(OBJ_LIST) -mconsole
main.exe
clean:
$(RM) *.o *.obj *.tmp *.exe *.dep *.s
depend.dep:
$(CC) -M $(C++FLAGS) $(wildcard *.cpp) > $@
-include depend.*
.cpp.o :
$(CXX) -c $(C++FLAGS) $<<br>%.dir:%
$(MAKE) -C $< $(DEBUG_MAKE)
保存好后,把文件名字改为: makefile (注:没有后缀)
第三步建立 main.cpp
创建一个文本文件,输入以下方框内的内容:
#include
using namespace std;
int main(int argc, char* argv[])
{
cout << "hello world"<<endl;
cout << "----------------------------" << endl;
cout << "filename=" << __FILE__ << "line="<< __LINE__ << endl;
cout << "time="<< __TIME__ << " date="<<__DATE__ << endl;
cout << "funname="<< __func__ << endl;
cout << "----------------------------" << endl;
return 0;
}
保存好后,把文件名字改为: main.cpp
说明:main.cpp示例中的__FILE__, __LINE__,__func__等几个宏,对嵌入式软件开发的debug非常帮助。
第四步编译运行console模式
双击第一步中建立的cmnd.bat,进入command模式,输入make回车,make自动调用makefile编译main.cpp,并且自动运行编译后的结果main.exe,输出如下结果:
D:\project >make
g++ -c -g -Wno-deprecated -Wall -Werror -I. main.cpp
g++ -o main.exe main.o -mconsole
main.exe
hello world
----------------------------
filename=main.cpp line=17
time=11:19:23 date=May 1 2007
funname=main
----------------------------
第五步编译运行windows 模式
编辑main.cpp,修改为如下的代码内容:
#include
intWINAPI WinMain (HINSTANCE hInstance,
HINSTANCE hPrevInstance,
PSTR szCmdLine,
int iCmdShow)
{
MessageBox (NULL, "Hello World, My Dear", "Hello Demo",MB_OK);
return (0);
}
同时把第二步骤的makefile 一行内容修正(把-mconsole改为-mwindows)
$(CC) -o $(TARGET) $(OBJ_LIST) –mconsole
修改为:
$(CC) -o $(TARGET) $(OBJ_LIST) –mwindows
运行make 如同第四步。
- GCC与MinGW的简单安装与使用
- GCC与MinGW的简单安装与使用
- GCC与MinGW的简单安装与使用
- GCC与MinGW的简单安装与使用
- GCC与MinGW的简单使用
- MinGW 的 安装与使用
- minGW 安装与使用
- 简单minGW配置与使用
- cygwin/gcc与MinGW
- cygwin/gcc与MinGW
- cygwin/gcc与MinGW
- cygwin/gcc与MinGW
- cygwin/gcc与MinGW
- cygwin/gcc与MinGW
- cygwin/gcc与MinGW
- cygwin/gcc与MinGW
- cygwin/gcc与MinGW
- cygwin/gcc与MinGW
- SDRAM的刷新操作
- 多色LED的原理
- 一种通信协议的创建
- 在Windows下使用gcc编译器
- SpringMVC--Spring注解你了解多少-听我细细讲来让你受益匪浅
- GCC与MinGW的简单安装与使用
- 如何改变新建幻灯片的默认字体
- getch()和getchar()的区别
- MC9S12XS128驱动LEDP10显示屏
- 浅谈C/C++中的static和extern关键…
- Android开发之旅:环境搭建及Hello…
- 编译报错LINK : fatal&n…
- C/C++不同文件夹下包含头文件的方…
- 下载u启动v5.1版安装并制作u盘启动…