某模块提供了test.h头文件和libtest.a库, 供外部代码调用:
1. 如果在代码中包含了某头文件test.h, 但在makefle中没有指定头文件路径/或者头文件根本不存在, 会出现编译错误, 会提示缺少test.h.
2. 如果包含了test.h头文件,且指定了头文件路径, 且指定libtest.a库, 但实际此库并不存在(比如没有提前编译出来), 会出现编译错误, 提示缺少 cannot find -ltest
3.如果包含了头文件,且指定了头文件路径, 但makefile没有指定libtest.a库, 编译的时候不会出问题, 但运行的时候会出问题: dlopen ... failed, undefined symbol ...
针对1: 用-I指定即可
针对2: 找到libtest.a库本该在的路径, 把libtes.a库放进去(比如编译生成)
针对3: 可以用ldd -r 或者nm -u命令在编译后查看xxx.so库缺什么符号(不用等到运行期出错才知道), 然后按照2来搞。 至于ldd命令和nm命令, 之前已经介绍过啦。