Phy*_*hyx 22 haskell ffi static-libraries fpic ghc
我正在尝试在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
Run Code Online (Sandbox Code Playgroud)
不幸的是,在编译时我仍然得到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
Run Code Online (Sandbox Code Playgroud)
所以似乎GHC-prim仍然没有用-FPIC编译我也告诉cabal用-fPIC和共享构建任何包.
有人有主意吗?
编辑:感谢dcouts,我已经取得了一些进展.但是现在我正处于我没有使用-fPIC编译libffi的时候.我为它编辑了makefile(.in),但到目前为止,没有运气.
新命令是:
ghc -fPIC -shared dllmain.o Hs2lib.o /usr/local/lib/ghc-7.0.3/libHSrts.a -o Hs2lib.so
Run Code Online (Sandbox Code Playgroud)
其中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
Run Code Online (Sandbox Code Playgroud)
collect2:ld返回1退出状态
小智 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
Run Code Online (Sandbox Code Playgroud)
注意我将 -fPIC 添加到失败的 ghc 命令中。
命令成功后,从 tmp 目录中继续编译,而不清除已编译的文件。它应该跳过它们并从结束的地方继续。
归档时间: |
|
查看次数: |
1870 次 |
最近记录: |