gpt4 book ai didi

windows - 在 Windows 上编译 libyaml

转载 作者:可可西里 更新时间:2023-11-01 14:19:29 27 4
gpt4 key购买 nike

所以,我正在开发一个运行 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

因此,这通常是我编译动态可加载库时函数名称的呈现方式。让我感到困惑的是,为什么链接器找不到这些函数?这个 imp 从哪里来?

我该怎么做才能让我的程序正确链接到 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

关于windows - 在 Windows 上编译 libyaml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9072178/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com