gcc中的-I, -L -l

时间:2021-10-28 09:13:10

-I dir

把目录“dir”加到目录列表中,而这一目的是为了搜索头文件。 以-I开头的目录将先于标准的系统include的目录被查找。如果“dir”目录就是标准的系统include目录,那这个选项将被忽略,为的是保证上述规则不被破坏。


-I library

当链接时,搜索以library为名的库。

如果你写这个选项在命令中时,情况将会有所不同。链接器将按照指定的顺序查找和处理库和目标文件。例如:foo.o -lz bar.o的搜索顺序为:foo.o>>>库z>>>bar.o。即使bar.o中指示到了库中的函数,但这些函数也不会被载入。

链接器将搜索这个库的标准目录列表,而这个库是以liblibrary命名的。

例如:

gcc -o hello hello.c -I /home/hello/include -L /home/hello/lib -lworld


上面这句表示在编译hello.c时:


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



-L /home/hello/lib表示将/home/hello/lib目录作为第一个寻找库文件的目录,寻找的顺序是:/home/hello/lib-->/lib-->/usr/lib-->/usr/local/lib



 -lworld表示在上面的lib的路径中寻找libworld.so动态库文件(如果gcc编译选项中加入了“-static”表示寻找libworld.a静态库文件)