makefile指定头文件和库出错的那点破事

       某模块提供了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命令, 之前已经介绍过啦。



  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值