首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Windows上编译libyaml

在Windows上编译libyaml
EN

Stack Overflow用户
提问于 2012-01-30 23:08:14
回答 1查看 2.3K关注 0票数 4

因此,我正在开发一个运行Linux的了不起的项目,我需要在Windows上实现这个端口。问题是,libyaml是我的依赖项的一部分,我需要为Windows编译它。

于是我开始运行我的cygwin环境,运行./配置和make,一切都进行得很顺利:库是构建的,我得到了.a文件。

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

代码语言:javascript
复制
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'

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

代码语言:javascript
复制
$ nm src/.libs/libyaml.a | grep parser_set_input_file
000005a8 T _yaml_parser_set_input_file

因此,这通常是在编译一个dinamicaly可加载库时函数名的表示方式。最让我兴奋的是,为什么链接器找不到这些功能?这个小鬼是从哪里来的?

为了让我的程序能够正确地链接到libyaml,我能做什么呢?除了这些功能之外,其他一切都在正常工作。

你愿意把我从这个邪恶的编译链接中救出来吗?我感谢你的关注。

编辑:我已经为这个问题做了几个小时了。所以,很明显,它可能来自于交融:来自西格温的gcc在编写这些例子时没有任何问题。然而,这些错误仍然存在,即使我试图这样做与雪佛兰的gcc。我开始讨厌这个弱智的操作系统了。每次我在Windows上开发时,我花更多的时间解决问题,而不是实际工作。为什么总是这么痛苦?

难道没有一种简单的方法可以解释链接器,而不是搜索那些函数的损坏名称吗?

编辑:我发现:http://cygwin.com/ml/cygwin/2001-04/msg00942.html似乎是一个类似的问题,有人在诅咒。虽然我还没能从这件事中得到什么。

EN

回答 1

Stack Overflow用户

发布于 2015-02-06 20:04:51

旧线,但答案仍不清楚。以下是0.1.5版的工作内容:

代码语言:javascript
复制
./configure CFLAGS="-DYAML_DECLARE_STATIC" --enable-static --disable-shared
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9072178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档