-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静态库文件)