wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在Windows上编译libyaml大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

所以,我正在开发一个运行 Linux的强大项目,我需要在Windows上创建端口.问题是,libyaml是我的依赖项的一部分,我需要为Windows编译它. 所以我运行了cygwin环境,运行了./configure和make,一切顺利:库已经构建,我得到了.a文件. 除了makefile从未结束,因为它无法构建示例:结果是库中缺少一些符号: undefined reference to `_im
@H_450_13@
所以,我正在开发一个运行 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可加载库时如何呈现函数名称.让我感到困惑的是,为什么链接器找不到这些@L_489_8@呢?这来自哪里?

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

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

编辑:我现在已经在这个问题上工作了几个小时.
所以,显然它可能来自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上编译libyaml全部内容,希望文章能够帮你解决在Windows上编译libyaml所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:libyaml编译