[Comm] Как найти пакеты для статической компиляции?
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/community/attachments/20180626/9b6707e9/attachment.html>
Подробная информация о списке рассылки community