使用依赖性pandoc-citeproc在Haskell中构建独立的二进制可执行文件

我正在尝试为用Haskell编写的CLI工具编译一个独立的可执行文件。我遵循了这个示例,使用Cabal v3.2和ghc v8.10.3使用Github Actions自动为不同的操作系统构建可执行文件。

这似乎运行良好,并且可执行文件确实可以正常工作,但是当实际应用于数据时,我收到以下针对Linux版本的错误消息(我没有测试Windows版本,但是一位同事确认MacOS版本也存在同样的问题):

myprogram-0.3.2-Linux-ghc-8.10.3: 
/home/runner/.cabal/store/ghc-8.10.3/pandoc-citeproc-0.17.0.2-
0607b6a3d51d41b0211d235af7fcf6eeb452dc6738775583dac1146860db61b1/
share/locales/locales-en-US.xml: openBinaryFile: does not exist (No such file or directory)

这告诉我,我依赖于BidocTeX文件解析的pandoc-citeproc包含一些其他数据文件,这些数据文件没有打包到可执行文件中。实际上,我在cabal-install文档中发现了以下句子:

请注意,复制的可执行文件不是自包含的,因为它们可能使用存储中的数据文件。资源

我确实在pandoc文档中也读过,可以用已经包含这些额外文件的方式来构建它。

可以编译pandoc,以便将pandoc使用的数据文件嵌入到二进制文件中。生成的二进制文件可以从任何目录运行,并且是完全独立的。使用cabal,将-fembed_data_files添加到cabal configure或cabal安装命令。对于堆栈,请使用--flag pandoc:embed_data_files。资源

如何构建可执行文件cabal install以防止出现上述错误消息?我希望这是可能的,并且我在这里不会错过任何重要的事情。

我试过了

cabal install exe:myprogram --install-method=copy --overwrite-policy=always -fembed_data_files

无济于事。

杜普莱德

embed_data_filescabal install exe:myprogram命令中添加标记将不起作用,因为cabal-install会将其传递给您的可执行文件,而不是将其转发给pandoc-citeproc将其设置为好,最方便的方法是通过cabal.project文件如果您没有,请使用以下最少内容创建它:

packages: ./*.cabal

package pandoc-citeproc
    flags: +embed_data_files

下次您要求构建时,cabal-install将使用该标志重新编译pandoc-citeproc依赖项。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

运行使用gccgo构建的二进制文件时,“ ELF可执行文件errno中没有调试信息”

来自分类Dev

使用LLVM工具将二进制数据嵌入可执行文件

来自分类Dev

如何使用自动工具设置项目,以便生成的可执行文件可以查看所需的二进制文件?

来自分类Dev

如何使用自动工具设置项目,以便生成的可执行文件可以查看所需的二进制文件?

来自分类Dev

如何通过 Python selenium 在多个 Firefox 二进制文件中选择要使用的 Firefox 可执行文件

来自分类Dev

使用NPM管理文件依赖性

来自分类Dev

ldd:FATAL:从可执行文件调用的未解析符号“ getopt_long”-在手臂上使用已编译的QNX二进制文件。为什么?

来自分类Dev

使用Grunt在HTML中插入Bower依赖性

来自分类Dev

使用Grunt在HTML中插入Bower依赖性

来自分类Dev

RedHawk 2.0二进制文件对libboost版本的依赖性如何?

来自分类Dev

从二进制文件安装Erlang和epmd具有循环依赖性

来自分类Dev

从二进制文件安装Erlang和epmd具有循环依赖性

来自分类Dev

Composer可以在PATH中处理二进制依赖性吗?

来自分类Dev

当使用可执行二进制文件开发gem时,无法要求存在lib目录中的文件

来自分类Dev

当使用可执行二进制文件开发gem时,无法要求存在lib目录中的文件

来自分类Dev

在Linux中从可执行文件到机器代码的二进制执行步骤

来自分类Dev

Artifactory 可以跟踪构建时独立可执行文件之间的运行时依赖关系吗?

来自分类Dev

Android:在AOSP版本中包含su二进制可执行文件

来自分类常见问题

如何使用sbt-native-packager在Docker中使二进制文件可执行?

来自分类Dev

使用GNU objcopy从Elf生成可执行二进制文件

来自分类Dev

如何使用sbt-native-packager在Docker中使二进制文件可执行?

来自分类Dev

与位置无关的可执行文件:什么是“主要可执行二进制文件”?

来自分类Dev

使用Haskell运行可执行文件

来自分类Dev

在具有Android Studio 2.2和CMake的Android中编译和使用依赖于ABI的可执行二进制文件

来自分类Dev

包含文件中的循环依赖性

来自分类Dev

是否可以将可执行文件/二进制文件(已构建)作为unikernels运行?

来自分类Dev

Automake构建系统的内部依赖性

来自分类Dev

RPM对文件存在的依赖性

来自分类Dev

显示本地文件依赖性

Related 相关文章

  1. 1

    运行使用gccgo构建的二进制文件时,“ ELF可执行文件errno中没有调试信息”

  2. 2

    使用LLVM工具将二进制数据嵌入可执行文件

  3. 3

    如何使用自动工具设置项目,以便生成的可执行文件可以查看所需的二进制文件?

  4. 4

    如何使用自动工具设置项目,以便生成的可执行文件可以查看所需的二进制文件?

  5. 5

    如何通过 Python selenium 在多个 Firefox 二进制文件中选择要使用的 Firefox 可执行文件

  6. 6

    使用NPM管理文件依赖性

  7. 7

    ldd:FATAL:从可执行文件调用的未解析符号“ getopt_long”-在手臂上使用已编译的QNX二进制文件。为什么?

  8. 8

    使用Grunt在HTML中插入Bower依赖性

  9. 9

    使用Grunt在HTML中插入Bower依赖性

  10. 10

    RedHawk 2.0二进制文件对libboost版本的依赖性如何?

  11. 11

    从二进制文件安装Erlang和epmd具有循环依赖性

  12. 12

    从二进制文件安装Erlang和epmd具有循环依赖性

  13. 13

    Composer可以在PATH中处理二进制依赖性吗?

  14. 14

    当使用可执行二进制文件开发gem时,无法要求存在lib目录中的文件

  15. 15

    当使用可执行二进制文件开发gem时,无法要求存在lib目录中的文件

  16. 16

    在Linux中从可执行文件到机器代码的二进制执行步骤

  17. 17

    Artifactory 可以跟踪构建时独立可执行文件之间的运行时依赖关系吗?

  18. 18

    Android:在AOSP版本中包含su二进制可执行文件

  19. 19

    如何使用sbt-native-packager在Docker中使二进制文件可执行?

  20. 20

    使用GNU objcopy从Elf生成可执行二进制文件

  21. 21

    如何使用sbt-native-packager在Docker中使二进制文件可执行?

  22. 22

    与位置无关的可执行文件:什么是“主要可执行二进制文件”?

  23. 23

    使用Haskell运行可执行文件

  24. 24

    在具有Android Studio 2.2和CMake的Android中编译和使用依赖于ABI的可执行二进制文件

  25. 25

    包含文件中的循环依赖性

  26. 26

    是否可以将可执行文件/二进制文件(已构建)作为unikernels运行?

  27. 27

    Automake构建系统的内部依赖性

  28. 28

    RPM对文件存在的依赖性

  29. 29

    显示本地文件依赖性

热门标签

归档