一、参数
-I (大写i)
编译程序按照-I指定的路进去搜索头文件。
-I/home/include/表示将-I/home/include/目录作为第一个寻找头文件的目录,寻找的顺序是:
/home/include/ -->/usr/include-->/usr/local/include
-L(大写l)
后跟路径,表示链接库的路径
-L/lib/表示到/lib/目录下找库文件
-l(小写l)
后跟库文件的库名,编译程序到系统默认路进搜索,如果找不到,到当前目录,如果当前目录找不到,则到LD_LIBRARY_PATH等环境变量置顶的路进去查找,如果还找不到,那么编译程序提示找不到库。
默认路径:/lib、/usr/lib、/usr/local/lib。
-lm 表示库文件:libm.so;把库文件名的头lib和尾.so去掉就是库名
二、生成静态链接库和动态链接库
1、编写头文件:api.h
int add(int a,int b);
2、编写源文件:api.cpp
#include "api.h"
int add(int a,int b){
return a+b;
}
3、编写主函数源文件:main.cpp
#include "api.h"
#include <iostream>
int main(){
std::cout << "1 + 1 = " << ADD(1, 1) << std::endl;
return 0;
}
4、编译生成目标文件api.o
g++ -c api.cpp
5、生成静态库:libapi.a;并使用静态库
ar crv libapi.a api.o
g++ main.cpp libapi.o -o output
6、生成动态库:libapi.so;并使用动态库
g++ -shared -fPIC -o libapi.so api.o
g++ main.cpp -L. -lapi -o output