-I(大写i)
include头文件非标准库中存在的不是在当前路径文件夹下的,需要将地址用-I(大写)指定
如:gcc test.c -I /home/hello/include
-L(大写l)
放在/lib和/usr/lib和/usr/local/lib里的库直接用-l参数就能链接了,但如果库文件没放在这三个目录里,而是放在其他目录里,这时我们只用-l参数的话,链接还是会出错,出错信息大概是:“/usr/bin/ld: cannot find -lxxx”,也就是链接程序ld在那3个目录里找不到libxxx.so.这时另外一个参数-L就派上用场了,比如curl库,它在/home/pi/curl/lib目录下,我们编译时就要用-L /home/pi/curl/lib-L参数跟着的是库文件所在的目录名。编译程序按照-L指定的路进去寻找库文件,一般的在-L的后面可以一次用-l指定多个库文件。
-l(小写l)
1.-l参数就是用来指定程序要链接的库,-l参数紧接着就是库名2.表示在上面的lib的路径中寻找libxxx.so动态库文件(如果gcc编译选项中加入了“-static”表示寻找libxxx.a静态库文件)3.编译程序到系统默认路径搜索,如果找不到,到当前目录,如果当前目录找不到,则到LD_LIBRARY_PATH等环境变量配置的路径去查找,如果还找不到,那么编译程序提示找不到库。
如我们编译程序时使用的:-lwiringPi -lpthread
注意:一个库的库名是xxx,他的库文件名是libxxx.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了