最初,CLib是用纯C编写的.Caral支持这种情况,我可以通过使用include-dirs,c-sources和include文件中的字段,将CLib以上述方式精确地集成到HLib中.
CLib已经发展成为一个C库,我无法弄清楚如何让小程序轻松集成.相反,我使用自定义构建和Setup.hs的makefile,如this.您可以看到一个这个方法的一个小例子here1,2.
在这个例子中,我无法在HLib中运行cabal repl,因为“不支持加载存档”.这真的意味着我需要一个动态的C库,它很简单,可以创建(在CLib makefile中有一个注释行).但是,如果我做动态C库,由于“没有这样的文件或目录libclib.so”,HLib的测试在运行时失败.这是坏的(除了崩溃),因为测试可执行文件链接到动态库,这不是我想要的.
具体来说,HLib和SimpleLib的测试都应该通过,我应该能够在hlib和simplelib目录中运行cabal repl.
我尝试过的其他事情:this answer,this answer(我无法编译),this和读取the docs(导致“重定位”错误).
我正在使用GHC-7.10.3,尽管如果这在8.0中显得更容易,那没关系.
[1]从lol/challenges简化.
[2]下载并运行./sandBox-init.这构建了HLib(它隐式构建CLib,SimpleLib是依赖于HLib的Haskell库.
解决方法
原文地址:https://www.jb51.cc/c/115998.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。