PS:我学习测试的时候写的是CPP代码,所以下面记录的时候用的是g++,当然也可以用gcc,但是要加参数,嫌麻烦就用的g++。只写C代码的话将g++改为gcc即可。
1、-c 只编译,生产.o文件,不进行链接;-o 制定目标名称, 默认的时候, gcc 编译出来的文件是 a.out。
g++ -c main.cpp -o main.o
2、-Wall 提示更多警告信息;-On n = 0~3 ,编译优化,n越大优化的越多。
g++ main.cpp -Wall -O0 -o app g++ main.cpp -Wall -O1 -o app1 g++ main.cpp -Wall -O3 -o app2
3、-D 编译时定义宏(下面代码运行会输出Hello World!);-g 包含调试信息(GDB调试器需要,编译出来的程序比不加-g时编译出来的程序要大)
g++ main.cpp -D DEBUG -g -o app
#include <iostream> using namespace std; int main() { int a = 112; #ifdef DEBUG cout << "Hello World!" << endl; #endif cin.get(); return 0; }
4、-I 指定头文件目录(include是当前目录下的文件夹,head.h在这个目录下)
g++ main.cpp -I include -o app
#include <iostream> #include "head.h" using namespace std; int main() { int a = 112; cout << "NUM1 + NUM2 = " << NUM1 + NUM2 << endl; #ifdef DEBUG cout << "Hello World!" << endl; #endif cin.get(); return 0; }
5、静态库的制作与使用
head .h 放在 include 文件夹
#ifndef HEAD_H #define HEAD_H #include <stdio.h> int add(int, int); int sub(int, int); int mul(int, int); #endif
add.c,sub.c,mul.c放在 src 文件夹下,
int add(int a, int b) { return a + b; }
int sub(int a, int b) { return a - b; }
int mul(int a, int b) { return a * b; }
生成 .o 文件
gcc *.c -c -I ../include
生成静态库
ar rcs libMyCalc.a *.o
将静态库 libMyCalc.a 移动到上级 lib 文件夹
mv libMyCalc.a ../lib/
静态库的使用:编译 main.c 与(include、lib、src文件夹在同一目录)
第一种编译方法:
gcc main.c ./lib/libMyCalc.a -I include -o app
第二章编译方法:
gcc main.c -Iinclude -L lib -l MyCalc -o app
原文:https://www.cnblogs.com/duxie/p/12814553.html