gpt4 book ai didi

haskell - 链接额外的库/对象失败

转载 作者:行者123 更新时间:2023-12-04 21:45:36 25 4
gpt4 key购买 nike

我将 FFI 绑定(bind)到 C++ unordered_map(a.k.a. hash_map) 容器及其名为 libstl.a 的包装库.
第一次,它曾经运行良好。但是在某个时间点之后,它无法将库与以下错误消息链接起来,我不知道为什么。

$ ghci -L. -lstl -lstdc++ 
GHCi, version 7.6.2: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading object (static archive) ./libstl.a ... done
Loading object (dynamic) /usr/lib/gcc/x86_64-linux-gnu/4.7/libstdc++.so ... done
final link ... ghc: ./libstl.a: unknown symbol `_ZZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEmE10__fast_bkt'
linking extra libraries/objects failed

该库的源代码位于 https://github.com/comatose/stl-container .
任何帮助将不胜感激。

最佳答案

我在将 .o 文件加载到 ghci 时遇到了类似的问题。据我了解,问题在于 g++ 在 .o 文件中留下了“弱符号”,而 ghci 不能很好地处理它们。

我找到了一个关于它的线程,并提供了有用的后续操作:

http://www.haskell.org/pipermail/haskell-cafe/2012-March/099926.html

其中建议的解决方案是将 g++ 编译的所有内容放入共享库(.so 文件而不是 .a)中,这似乎解决了弱符号问题。共享库可能有点痛苦。我建议你看看 libtool。这是一个可以处理很多复杂情况的辅助程序:

http://www.gnu.org/software/libtool/

关于haskell - 链接额外的库/对象失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15004383/

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