加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

链接时报告错误“undefined reference to ...”的原因

(2016-11-24 16:31:37)
标签:

编译

链接

undefined

reference

to

分类: C
在C语言中,用 Embed 方式调用 Python 程序。编译正常。链接时报告错误“undefined reference to `Py_Initialize' ”。“undefined reference to ...” 是一个常见错误,一般来讲,其原因是在链接命令行中列出的链接库没有定义指定接口(函数,此处为`Py_Initialize' )。于是,在调用路径,链接函数中反复核查,路径没有错,用nm命令查看Python3.4.so,也找到了相关函数符号的定义 'Py_Initialize' 。但make最后的链接操作就是报告错误“undefined reference to `Py_Initialize' 。昨夜折腾到两点,仍然不明就里。

今日继续,终于,在网上看到一句话“对于-l 使用库的要求是:越是基础的库越要写在后面无论是静态还动态”。这个很好理解,*.o,*.a,*.so,这些目标文件相互之间的确是存在依赖关系的,应该“向后找”。

于是,修改makefile:将“$(CC) $(LDFLAGS) -o $@ $^ ” 改为 “$(CC) $^ $(LDFLAGS) -o $@”(我们自己写的程序当然是最高级的,应该放到最前面)。一点小的错误耽搁这么长时间,郁闷。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有