前几天终于完成了项目中一个应用的编写,那就要写Makefile.由于对次研究不深,写的Makefile 问题,一直提示找不到头文件。由于移植了libmodbus这个开源库。提示找不到modbus.h这个头文件,刚开始我觉得很奇怪,我用-I +XXX路径,这个路径下确实是有这个库文件的,以前移植的开源库也是用这种方法来指定开源库文件以及头文件的搜索路径,都是没有问题的,这次就出现了问题,这时我想到可能是写的Makefile 有问题。
在讨论这个问题之前我们先要理解编译和链接的不同,编译只是生成.o文件,如果源代码中有要包含外部库的头文件,那么需要用-I选项来指定头文件的搜索路径,如果花蛇添足的用-L选项来指定库文件的搜索路径,就会报没有找到对应头文件的错误。而如果要对多个.o文件链接生成可执行文件。则必须要用-L来指定库文件的搜索路径,这个一般人不会弄错。