相关疑难解决方法(0)

小型Haskell程序用GHC编译成巨大的二进制文件

即使是简单的小型Haskell程序也会变成巨大的可执行文件.

我已经编写了一个小程序,它被编译(用GHC)到二进制文件,大小扩展到7 MB!

甚至可以将一个小的Haskell程序编译成巨大的二进制文件?

如果有的话,我可以做些什么来减少这个?

linker haskell ghc glfw static-linking

123
推荐指数
2
解决办法
1万
查看次数

将Yesod部署到Heroku,无法静态构建

我是Yesod的新手,我无法静态构建Yesod,因此我可以部署到Heroku.

我更改了默认的.cabal文件以反映静态编译

if flag(production)
   cpp-options:   -DPRODUCTION
   ghc-options:   -Wall -threaded -O2 -static -optl-static
else
   ghc-options:   -Wall -threaded -O0
Run Code Online (Sandbox Code Playgroud)

它不再构建.我得到了一大堆警告,然后是一大堆未定义的引用,如下所示:

Linking dist/build/personal-website/personal-website ...
/usr/lib/ghc-7.0.3/libHSrts_thr.a(Linker.thr_o): In function
`internal_dlopen':
Linker.c:(.text+0x407): warning: Using 'dlopen' in statically linked
applications requires at runtime the shared libraries from the glibc
version used for linking
/usr/lib/ghc-7.0.3/unix-2.4.2.0/libHSunix-2.4.2.0.a(HsUnix.o): In
function `__hsunix_getpwent':
HsUnix.c:(.text+0xa1): warning: Using 'getpwent' in statically linked
applications requires at runtime the shared libraries from the glibc
version used for linking
/usr/lib/ghc-7.0.3/unix-2.4.2.0/libHSunix-2.4.2.0.a(HsUnix.o): In
function `__hsunix_getpwnam_r':
HsUnix.c:(.text+0xb1): warning: Using 'getpwnam_r' in …
Run Code Online (Sandbox Code Playgroud)

linux haskell heroku static-linking yesod

27
推荐指数
2
解决办法
3万
查看次数

Haskell的Hello世界是1.3 MB

我发现Haskell中的Hello World可执行文件是1.3 MB,我感到非常失望.这对我来说真是不可接受.难道我做错了什么?让hello world可执行文件如此庞大有什么借口?是否有合理的方法来减少这种情况?C中的相同内容是8 kb.

main = print "Hello, worlds"
Run Code Online (Sandbox Code Playgroud)

haskell

1
推荐指数
1
解决办法
288
查看次数

标签 统计

haskell ×3

static-linking ×2

ghc ×1

glfw ×1

heroku ×1

linker ×1

linux ×1

yesod ×1