加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

在Windows上编译libyaml

发布时间:2020-12-14 05:35:59 所属栏目:Windows 来源:网络整理
导读:所以,我正在开发一个运行 Linux的强大项目,我需要在Windows上创建端口.问题是,libyaml是我的依赖项的一部分,我需要为Windows编译它. 所以我运行了cygwin环境,运行了./configure和make,一切顺利:库已经构建,我得到了.a文件. 除了makefile从未结束,因为它无法
所以,我正在开发一个运行 Linux的强大项目,我需要在Windows上创建端口.问题是,libyaml是我的依赖项的一部分,我需要为Windows编译它.

所以我运行了cygwin环境,运行了./configure和make,一切顺利:库已经构建,我得到了.a文件.

除了makefile从未结束,因为它无法构建示例:结果是库中缺少一些符号:

undefined reference to `_imp__yaml_parser_initialize'
undefined reference to `_imp__yaml_parser_set_input_file'
undefined reference to `_imp__yaml_parser_scan'
undefined reference to `_imp__yaml_token_delete'
undefined reference to `_imp__yaml_parser_delete'

所以当然,想知道这怎么可能是真的,我继续搜索所说的符号,事实上,我发现它们是二进制的,尽管符号有点不同,你可以看到:

$nm src/.libs/libyaml.a | grep parser_set_input_file
000005a8 T _yaml_parser_set_input_file

因此,这通常是在编译dinamicaly可加载库时如何呈现函数名称.让我感到困惑的是,为什么链接器找不到这些功能呢?这来自哪里?

我能做些什么才能使我的程序能够正确链接到libyaml?除了这些功能之外,其他所有功能都正常工作.

你会成为那个拯救我脱离这种恶魔般的连环东西的人吗?
我感谢你的关注.

编辑:我现在已经在这个问题上工作了几个小时.
所以,显然它可能来自mingw:来自cygwin的gcc在编译示例时没有任何问题.
但是,即使我尝试使用cygwin的gcc,错误仍然存??在.我开始厌倦这个迟钝的操作系统了.每当我在Windows上开发时,我花费更多时间来解决问题,而不是实际工作.为什么总是这么痛?

是不是有一种简单的方法来解释链接器不搜索那些函数的错位名称?

编辑:我发现了这个:
http://cygwin.com/ml/cygwin/2001-04/msg00942.html
看起来像是一个与ncurses有关的类似问题.虽然我无法做出任何改变.

解决方法

旧线程,但答案仍不清楚.以下适用于版本0.1.5:

./configure CFLAGS="-DYAML_DECLARE_STATIC" --enable-static --disable-shared

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读