haskell ghc static-linking cabal

Enlace estático GMP a una aplicación Haskell usando GHC(+ LLVM)



static-linking cabal (1)

Si pasa -optl-static -optl-pthread a GHC, enlazará estáticamente todas las dependencias de la biblioteca en tiempo de ejecución, incluido GMP. Configurando ld-options: -static -pthread en tu archivo Cabal debería lograr lo mismo.

Eso significa que vinculará estáticamente en glibc también, pero eso probablemente no será un problema, aunque podría aumentar un poco el tamaño del binario. Usar una libc alternativa como musl o uClibc debería ayudar a contrarrestar eso, si es un problema para usted.

  1. ¿Cómo puedo eliminar la dependencia dinámica en libgmp y pasar de esto?

    linux-vdso.so.1 => (0x00007fffdccb1000) libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007fb01afc1000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb01acc7000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fb01aabe000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fb01a8ba000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb01a69d000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb01a2df000) /lib64/ld-linux-x86-64.so.2 (0x00007fb01b249000)

    a esto (actualmente deseado):

    linux-vdso.so.1 => (0x00007fffdccb1000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb01acc7000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fb01aabe000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fb01a8ba000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb01a69d000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb01a2df000) /lib64/ld-linux-x86-64.so.2 (0x00007fb01b249000)

    de una manera limpia y portátil que simplemente funciona en todas las distribuciones de GNU / Linux (y no estropear con BSD (incluido OS X))?

  2. ¿Ve alguna otra dependencia que pueda causar problemas en la lista actualmente deseada como se indicó anteriormente cuando se distribuye un solo binario Haskell dirigido a múltiples distribuciones de GNU / Linux?

Notas: