gpt4 book ai didi

haskell - ghc armv7 二进制 + cabal ?非法指令

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

我正在尝试使用最近发布的 armv7 ghc 二进制文件在 raspberry pi 2 上启动并运行,可在此处获得:

https://www.haskell.org/ghc/download_ghc_7_10_2#linux_armv7

这说明它是用 debian jesse 构建的,所以我在我的 pi2 上安装了 debian jesse。我已经成功安装了 ghc - 至少 ghci 有效。但是没有 cabal ,显然 ghc 7.10.2 需要 cabal 1.22+。 cabal 的 debian 版本类似于 1.16(也将安装 ghc 7.6.x)。所以我正在尝试使用它的 bootstrap.sh 脚本从源代码安装 cabal-install。这会下载 mtl 包并构建一个“设置”可执行文件,然后尝试执行它。但是安装程序 exe 因“非法指令”而失败。

根据下载页面,需要“黄金”链接器。我通过这样做添加了

ln -s which gold ~/bin/ld



并将我的路径设置为包含 ~/bin。不幸的是同样的结果。

接下来我尝试用黄金重新安装 ghc 二进制文件(我认为)。所以作为根:
> ln -s `which gold` /usr/local/bin/ld
> cd ghc-7.10.2
> make install

再次成功安装了 ghc,但是构建 cabal-install 的结果是一样的:
bburdette@jessie-rpi:~/code/cabal/cabal-install$ ./bootstrap.sh 
Using gcc for C compiler. If this is not what you want, set CC.
Using /usr/lib/gcc/arm-linux-gnueabihf/4.9/collect2 instead.
Checking installed packages for ghc-7.10.2...
deepseq is already installed and the version is ok.
binary is already installed and the version is ok.
time is already installed and the version is ok.
Cabal is already installed and the version is ok.
transformers is already installed and the version is ok.
mtl-2.2.1 will be installed from local tarball.
text-1.2.0.3 will be downloaded and installed.
parsec-3.1.7 will be downloaded and installed.
network-2.6.0.2 will be downloaded and installed.
old-locale-1.0.0.7 will be downloaded and installed.
old-time-1.1.0.3 will be downloaded and installed.
HTTP-4000.2.19 will be downloaded and installed.
zlib-0.5.4.2 will be downloaded and installed.
random-1.1 will be downloaded and installed.
stm-2.4.4 will be downloaded and installed.

Using local tarball for mtl-2.2.1.
[1 of 1] Compiling Main ( Setup.hs, Setup.o )
Linking Setup ...
Illegal instruction

Error during cabal-install bootstrap:
Configuring the mtl package failed.

有任何想法吗?

我想知道符号链接(symbolic link)是否是为此启用黄金的正确方法?也许我需要在每个 cabal 项目中将其添加为 ghc 选项,或者还有其他使用黄金的方法?或者也许这根本不是问题?

最佳答案

好的,终于解决了这个问题。根据 ghc 下载页面,您应该使用 debian jessie 附带的 llvm 3.5。但是默认的 llvm 版本是 3.5-10,这不起作用。需要的是3.5.2-2。

我下载了 3.5.2-2 的 deb 并安装了它,但它很快就变成了依赖 hell ,需要安装 llvm 3.5.2-2 所需的 5-6 个库。我切换到 debian 测试,安装 llvm 更容易。如果您在 debian 实验中,它可能会更容易。

我使用的 ghc 7.10.2 包:
https://packages.debian.org/experimental/armhf/ghc/download

我在 debian jessie 上使用默认 llvm 3.5 的错误:
https://ghc.haskell.org/trac/ghc/ticket/10863

关于haskell - ghc armv7 二进制 + cabal ?非法指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32124334/

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