gpt4 book ai didi

haskell - 使用 -fPIC 支持编译 ghc

转载 作者:行者123 更新时间:2023-12-02 08:09:33 24 4
gpt4 key购买 nike

我正在尝试在 Fedora 中安装带有 -fPIC 支持的 GHC。我已经获取了源代码 tarball,因为似乎没有二进制文件具有此功能。

在 Build.mk 中,我已将快速构建类型更改为

ifeq "$(BuildFlavour)" "quick"

SRC_HC_OPTS = -H64m -O0 -fasm -fPIC
GhcStage1HcOpts = -O -fasm -fPIC
GhcStage2HcOpts = -O0 -fasm -fPIC
GhcLibHcOpts = -O -fasm -fPIC
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO

endif

不幸的是,编译时我仍然收到 ld 错误

ghc -fglasgow-exts --make -shared -oHs2lib.a /tmp/Hs2lib924498/Hs2lib.hs dllmain.o -static -fno-warn-deprecated-flags -O2 -package ghc -package Hs2lib -i/home/phyx/Documents/Haskell/Hs2lib -optl-Wl,-s -funfolding-use-threshold=16 -optc-O3 -optc-ffast-math
Linking a.out ...
/usr/bin/ld: /tmp/Hs2lib924498/Hs2lib.o: relocation R_X86_64_32 against `ghczmprim_GHCziUnit_Z0T_closure' can not be used when making a shared object; recompile with -fPIC
/tmp/Hs2lib924498/Hs2lib.o: could not read symbols: Bad value

看来 GHC-prim 仍然没有用 -FPIC 编译我还告诉 cabal 使用 -fPIC 和共享来构建任何软件包。

大家有什么想法吗?

编辑:感谢 dcout,我已经取得了一些进展。但现在我认为 libffi 不是用 -fPIC 编译的。我已经为其编辑了 makefile(.in),但到目前为止,还没有成功。

新命令是:

 ghc -fPIC -shared dllmain.o Hs2lib.o /usr/local/lib/ghc-7.0.3/libHSrts.a -o Hs2lib.so

其中 dllmain.c 和 Hs2lib.hs 均已使用 -fPIC 进行编译。我得到的错误是:

/usr/bin/ld: /usr/local/lib/ghc-7.0.3/libHSffi.a(closures.o): relocation R_X86_64_32 
against `.rodata' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/ghc-7.0.3/libHSffi.a: could not read symbols: Bad value

collect2: ld 返回 1 退出状态

最佳答案

看到此错误后,请执行以下操作:

cd /tmp/Hs2lib924498/
ghc -fglasgow-exts --make -shared -oHs2lib.a /tmp/Hs2lib924498/Hs2lib.hs dllmain.o -static -fno-warn-deprecated-flags -fPIC -O2 -package ghc -package Hs2lib -i/home/phyx/Documents/Haskell/Hs2lib -optl-Wl,-s -funfolding-use-threshold=16 -optc-O3 -optc-ffast-math

注意我将 -fPIC 添加到失败的 ghc 命令中。

命令成功后,从 tmp 目录中继续编译,而不清除已编译的文件。它应该跳过它们并从结束处继续。

关于haskell - 使用 -fPIC 支持编译 ghc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7652799/

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