首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >减少GHC产生的可执行文件的大小

减少GHC产生的可执行文件的大小
EN

Stack Overflow用户
提问于 2012-09-09 16:18:48
回答 2查看 3K关注 0票数 20

使用带有像-O3这样的标志的GHC7.4.2版,我仍然会得到巨大的可执行文件。我知道GHC做静态链接,二进制文件的依赖关系如下:

代码语言:javascript
复制
    linux-vdso.so.1 (0x00007fff49bff000)
    libpcre.so.1 => /usr/lib/libpcre.so.1 (0x00007fe658d6c000)
    librt.so.1 => /usr/lib/librt.so.1 (0x00007fe658b64000)
    libutil.so.1 => /usr/lib/libutil.so.1 (0x00007fe658961000)
    libdl.so.2 => /usr/lib/libdl.so.2 (0x00007fe65875d000)
    libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007fe658541000)
    libcurl.so.4 => /usr/lib/libcurl.so.4 (0x00007fe6582e3000)
    libgmp.so.10 => /usr/lib/libgmp.so.10 (0x00007fe658074000)
    libm.so.6 => /usr/lib/libm.so.6 (0x00007fe657d7a000)
    libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007fe657b65000)
    libc.so.6 => /usr/lib/libc.so.6 (0x00007fe6577be000)
    /lib/ld-linux-x86-64.so.2 (0x00007fe658fca000)
    libssh2.so.1 => /usr/lib/libssh2.so.1 (0x00007fe657595000)
    libssl.so.1.0.0 => /usr/lib/libssl.so.1.0.0 (0x00007fe65732b000)
    libcrypto.so.1.0.0 => /usr/lib/libcrypto.so.1.0.0 (0x00007fe656f22000)
    libz.so.1 => /usr/lib/libz.so.1 (0x00007fe656d0c000

到目前为止,它看起来相当不错,但是在二进制文件中我可以看到下面的代码行:

代码语言:javascript
复制
GHCi runtime linker: fatal error: I found a duplicate definition for symbol
* Specifying the same object file twice on the GHCi command line 

  ....BlockedIndefinitelyOnMVar.......BlockedIndefinitelyOnSTM........AsyncException..base....GHC.IO.FD.......FD......GHC.IO.FD.setSize.

实际上有很多文本行,包括我的函数的名称,在其他模块中定义的函数等等。问题是-是否有可能删除这些文本,以及GHC是否可以从外部库中消除未使用的代码?

EN

回答 2

Stack Overflow用户

发布于 2012-11-17 16:59:46

与大多数其他编译器相比,LLVM可以在链接时进行更多的优化。也许GHC有一个LLVM后端,你可以重新编译并将你的一些/所有依赖项链接到-O4。

票数 2
EN

Stack Overflow用户

发布于 2012-11-09 16:37:46

如果您使用的是gcc后台,您可以通过向ghc传递-optc-Os标志来优化输出的大小。也许你可以把你的二进制代码减少一些字节。但我也建议使用动态链接,就像之前所建议的那样,这有其利弊。

更新:

使用UPX http://en.wikipedia.org/wiki/UPX或gzexe压缩可执行文件以减小可执行文件的大小。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12337543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档