记录GCC的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yehuohan/article/details/51054976

GCC介绍

  • GCC 原名为 GNU C 语言编译器(GNU C Compiler),因为它原本只能处理 C语言。GCC 很快地扩展,变得可处理 C++。后来又扩展能够支持更多编程语言,如Fortran、Pascal、Objective-C、Java、Ada、Go以及各类处理器架构上的汇编语言等,所以改名GNU编译器套件(GNU Compiler Collection)。

  • GCC 对于操作系统平台及硬件平台支持,概括起来就是一句话:无所不在。Arm,X86_64等都有GCC的身影。


基本说明

 gcc 编译c文件
 g++ 编译cpp文件

.c      C源程序;预处理,编译,汇编
.cpp    C++源程序;预处理,编译,汇编
.cc     C++源程序;预处理,编译,汇编
.cxx    C++源程序;预处理,编译,汇编
.m      Objective-C源程序;预处理,编译,汇编
.i      预处理后的C文件;编译,汇编
.ii     预处理后的C++文件;编译,汇编
.s      汇编语言源程序;汇编
.S      汇编语言源程序;预处理,汇编
.h      预处理器文件;通常不出现在命令行上

基本使用

  • 生成可执行文件
"gcc, g++"
gcc main.c -o main
g++ main.c -o main
# c 文件用gcc命令, cpp文件用g++命令

"-o"
g++ main.cpp src.cpp -o main
# 直接编译链接*.cpp,生成main.exe
  • 生成obj文件
"-c"
g++ -c main.cpp
# 编绎cpp文件,输出目标main.o文件
  • 生成静态库(.a)
"ar -crv"
ar -crv libmain.a main.o
# 由.o生成静态库.a文件(也称归档文件)
  • 生成动态库(.so)
"-shared -fPIC"
g++ -shared -fPIC -o libmain.so main.o
# 由.o文件生成动态库.so文件
  • 添加头文件目录
"-I"
g++ main.cpp -o main -I "./src"
# 头文件在 "./src" 中,多个文件夹用多个 "-I"
  • 添加库文件
"-L"
g++ main.cpp -o main -L "./lib"
# 指定库文件路径"./lib"

"-l"
g++ main.cpp -o main -llibmain
# 指定库文件libmain.so或libmain.a

配置选项

  • 设置源文件编码和可执行文件编码
"-finput-charset"
g++ main.cpp -finput-charset=utf-8
# main.cpp文件编码为utf-8

"-fexec-charset"
g++ main.cpp -o main -fexec-charset=gbk
# main.exe字符编码为gbk,windows下用gbk输出才不会乱码
  • 设置c++标准
"-std"
g++ main.cpp -std=c++11
# 采用c++11标准编译,支持新特性,如nullptr等
  • 设置x86或x64
"-m32" "-m64"
g++ main.cpp -m32
# 编译成32位程序或64位程序

猜你喜欢

转载自blog.csdn.net/yehuohan/article/details/51054976