1:编译器编译的时候,默认到哪里找头文件,如果不在怎么指定编译器到哪里找头文件?
(1):如果头文件用<>引用,则默认到/usr/include或/usr/local/include下找,交叉编译器则在对应的路径的子目录usr/include下找
(2):如果头文件用""引用,则先到当前目录下找头文件,如果没找到,则还是到/usr/include或/usr/local/include下找,交叉编译器还是在对应的路径的子目录usr/include下找
(3):如果头文件不在默认的路径下,则在编译时,用-I指定头文件的路径(不需要具体到头文件名)。
2:链接器在做连接的时候,默认到哪里找动态库,如果不在怎么指定链接器到哪里找库文件?
连接器默认到/lib,/usr/lib,/usr/local/lib下找动态库,如果不在默认路径,则可在编译时用-L指定链接库的路径,并且用-l指定要链接的库名(如果动态库为libssl.so,则库名为ssl,不是动态库的名字)。
3:链接器如果找不到某个函数或变量的定义,该怎么指定链接器要链接哪个库文件?
如果程序依赖的某动态库不在默认路径下,则可通过环境变量LD_LIBRARY_PATH指定(新增)一个库文件的路径,可export LD_LIBRARY_PATH=库文件路径:$LD_LIBRARY_PATH(冒号为分隔符,$表示取LD_LIBRARY_PATH之前的值)。