Syn*_*ted 11 haskell haskell-stack
我正在使用stack
构建项目并发现即使对于简单程序,生成的可执行文件也非常大(10M).为了减少可执行文件的大小,我如何stack
构建共享库并生成动态链接到共享库的可执行文件?
ghc-options
在.cabal文件中添加" -dynamic".
例如,在生成的项目中stack new simple-example simple
,simple
在将"-dynamic"添加到之前,可执行文件是1.0M ghc-options
.改变后减少到12K.
以下是相关部分simple-example.cabal
:
executable simple-example
hs-source-dirs: src
main-is: Main.hs
default-language: Haskell2010
build-depends: base >= 4.7 && < 5
ghc-options: -dynamic
Run Code Online (Sandbox Code Playgroud)
构建stack build
(不需要选项).
要显示动态链接的库,您可以使用该ldd
工具(或otool -L
在Mac上).
$ otool -L .stack-work/install/x86_64-osx/lts-6.10/7.10.3/bin/simple-example
.stack-work/install/x86_64-osx/lts-6.10/7.10.3/bin/simple-example:
@rpath/libHSbase-4.8.2.0-HQfYBxpPvuw8OunzQu6JGM-ghc7.10.3.dylib (compatibility version 0.0.0, current version 0.0.0)
@rpath/libHSinteger-gmp-1.0.0.0-2aU3IZNMF9a7mQ0OzsZ0dS-ghc7.10.3.dylib (compatibility version 0.0.0, current version 0.0.0)
@rpath/libHSghc-prim-0.4.0.0-8TmvWUcS1U1IKHT0levwg3-ghc7.10.3.dylib (compatibility version 0.0.0, current version 0.0.0)
@rpath/libHSrts-ghc7.10.3.dylib (compatibility version 0.0.0, current version 0.0.0)
@rpath/libffi.dylib (compatibility version 7.0.0, current version 7.2.0)
/usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1612 次 |
最近记录: |