[sisyphus] Как найти пакеты для статической компиляции?

Eugine Kosenko eugine.kosenko на gmail.com
Вт Июн 26 16:18:18 MSK 2018


На основе Yesod было собрано приложение hello, которое по сути является
мини-web-сервером. У меня на локальной машине в Сизифе оно запускается и
работает без ошибок.

Для деплоймента нужно разместить его на Amazon EC2, где работает Ubuntu
10.14. Памяти и диска там мало, поэтому компилировать приложение на сервере
сейчас невозможно. Да и вообще компилировать на сервере --- последнее дело.

В общем, ситуация очень похожа на описанную здесь:

https://ro-che.info/articles/2015-10-26-static-linking-ghc

Выход --- статическая компиляция, как и описано в статье. Тут есть одна
сложность --- при компиляции в системе должны стоять нужные статические
библиотеки. Иначе возникает ошибка типа такой:

$ stack build --ghc-options='-optl-static -optl-pthread -fPIC' --force-dirty
...
[ 4 of 12] Compiling Settings.StaticFiles ( src/Settings/StaticFiles.hs,
.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/Settings/StaticFiles.o )
/usr/bin/ld.gold: error: /usr/lib64/gcc/x86_64-alt-linux/7/crtbeginT.o:
requires dynamic R_X86_64_32 reloc against '__TMC_END__' which may overflow
at runtime; recompile with -fPIC
collect2: error: ld returned 1 exit status
`gcc' failed in phase `Linker'. (Exit code: 1)

Динамические зависимости такие:

$ ldd hello
        linux-vdso.so.1 (0x00007ffff71bd000)
        libm.so.6 => /lib64/libm.so.6 (0x00007fa222f9a000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fa222d7b000)
        libz.so.1 => /lib64/libz.so.1 (0x00007fa222b63000)
        librt.so.1 => /lib64/librt.so.1 (0x00007fa22295b000)
        libutil.so.1 => /lib64/libutil.so.1 (0x00007fa222758000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007fa222554000)
        libgmp.so.10 => /usr/lib64/libgmp.so.10 (0x00007fa2222e0000)
        libnuma.so.1 => /usr/lib64/libnuma.so.1 (0x00007fa2220d5000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fa221d18000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fa22332d000)

Вопрос: какие пакеты нужны для того, чтобы скомпилировать это же приложение
статически?

Установки только glibc-devel-static и gmp-devel-static оказывается явно
недостаточно.
----------- следующая часть -----------
Вложение в формате HTML было удалено...
URL: <http://lists.altlinux.org/pipermail/sisyphus/attachments/20180626/9b6707e9/attachment-0001.html>


Подробная информация о списке рассылки Sisyphus