1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Linux gcc编译程序时 -I(大写 i ) -L (大写 L) -I(小写 L )的作用与区别

Linux gcc编译程序时 -I(大写 i ) -L (大写 L) -I(小写 L )的作用与区别

时间:2023-09-06 08:08:48

相关推荐

Linux gcc编译程序时 -I(大写 i ) -L (大写 L) -I(小写 L )的作用与区别

gcc编译程序时,-I(大写 i )、-L (大写 I)、-I(小写 I )的作用与区别

1.问题描述2. -I (大写i)3. -L(大写 L)4.-l(小写L)

1.问题描述

在进行程序编译,有时稍微复杂一点的程序就会使用到库,并且就会去配置一些环境变量,这段时间这点学得有点混乱,所以做个总结区分这三个标志。

2. -I (大写i)

include头文件非标准库中存在的也不是在当前文件夹下的,需要将地址用-i(大写)包含

例如:

gcc -o face baidu_http.c -I /home/hello/include -lcurl -lssl -lcrypto

上面这句指令在编译baidu_http.c时:

-I /home/hello/include表示将/home/hello/include目录作为第一个寻找头文件的目录,寻找的顺序是:/home/hello/include --> /usr/include --> /usr/local/includ

3. -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 -lcurl

-L参数跟着的是库文件所在的目录名。

总得来说:编译程序按照-L指定的路进去寻找库文件,一般的在-L的后面可以一次用-l指定多个库文件。

4.-l(小写L)

-l参数就是用来指定程序要链接的库,-l参数紧接着就是库名表示在上面的lib的路径中寻找libxxx.so动态库文件(如果gcc编译选项中加入了“-static”表示寻找libxxx.a静态库文件)编译程序到系统默认路径搜索,如果找不到,到当前目录,如果当前目录找不到,则到LD_LIBRARY_PATH等环境变量配置的路径去查找,如果还找不到,那么编译程序提示找不到库。

注意:数学库的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。