xirurensheng_123 2016-09-05 07:35 采纳率: 0%
浏览 1478
已采纳

请问下编译的链接静态库或者共享库使用-l选项的时候问题

想请教下,为什么在Makefile中其放在目标文件后边使用的时候没有问题,为什么放在目标文件前边就提示要使用的静态库
或者共享库中的函数不存在

前提libadd.a是存在的
比如编译生成main程序:
gcc -L 库文件所在路径 -ladd main.o -o main
这样使用提示我要体用libadd.a中的add函数未引用
如果我将-ladd 放在main的后边就不报错

  • 写回答

2条回答 默认 最新

  • hijack00 2016-09-05 10:57
    关注

    gcc的连接选项是有顺序的,应该将最被依赖的选项放到最后,这样才不容易出现undefined reference to xx之类的错误。经验是将-l开头的选项放到命令行的末尾,这样不容易出问题

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 如何实现uniapp编译的微信小程序做可回溯视频
  • ¥15 求Houdini使用行家,付费。价格面议。
  • ¥15 AttributeError: 'EasyDict' object has no attribute 'BACKUP_DB_INFO'
  • ¥15 前端高拍仪调用问题报错
  • ¥15 想用octave解决这个数学问题
  • ¥15 Centos新建的临时ip无法上网,如何解决?
  • ¥15 海康威视如何实现客户端软件对设备语音请求的处理。
  • ¥15 支付宝h5参数如何实现跳转
  • ¥15 MATLAB代码补全插值
  • ¥15 Typegoose 中如何使用 arrayFilters 筛选并更新深度嵌套的子文档数组信息