<div dir="ltr"><div>На основе Yesod было собрано приложение hello, которое по сути является мини-web-сервером. У меня на локальной машине в Сизифе оно запускается и работает без ошибок.</div><div><br></div><div>Для деплоймента нужно разместить его на Amazon EC2, где работает Ubuntu 10.14. Памяти и диска там мало, поэтому компилировать приложение на сервере сейчас невозможно. Да и вообще компилировать на сервере --- последнее дело.</div><div><br></div><div>В общем, ситуация очень похожа на описанную здесь:</div><div><br></div><div> <a href="https://ro-che.info/articles/2015-10-26-static-linking-ghc">https://ro-che.info/articles/2015-10-26-static-linking-ghc</a></div><div><br></div><div>Выход --- статическая компиляция, как и описано в статье. Тут есть одна сложность --- при компиляции в системе должны стоять нужные статические библиотеки. Иначе возникает ошибка типа такой:</div><div><br></div><div>$ stack build --ghc-options=&#39;-optl-static -optl-pthread -fPIC&#39; --force-dirty<br></div><div>...<br></div><div>[ 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 )<br>/usr/bin/ld.gold: error: /usr/lib64/gcc/x86_64-alt-linux/7/crtbeginT.o: requires dynamic R_X86_64_32 reloc against &#39;__TMC_END__&#39; which may overflow at runtime; recompile with -fPIC<br>collect2: error: ld returned 1 exit status<br>`gcc&#39; failed in phase `Linker&#39;. (Exit code: 1)<br></div><div><br></div><div>Динамические зависимости такие:</div><div><br></div><div>$ ldd hello <br>        linux-vdso.so.1 (0x00007ffff71bd000)<br>        libm.so.6 =&gt; /lib64/libm.so.6 (0x00007fa222f9a000)<br>        libpthread.so.0 =&gt; /lib64/libpthread.so.0 (0x00007fa222d7b000)<br>        libz.so.1 =&gt; /lib64/libz.so.1 (0x00007fa222b63000)<br>        librt.so.1 =&gt; /lib64/librt.so.1 (0x00007fa22295b000)<br>        libutil.so.1 =&gt; /lib64/libutil.so.1 (0x00007fa222758000)<br>        libdl.so.2 =&gt; /lib64/libdl.so.2 (0x00007fa222554000)<br>        libgmp.so.10 =&gt; /usr/lib64/libgmp.so.10 (0x00007fa2222e0000)<br>        libnuma.so.1 =&gt; /usr/lib64/libnuma.so.1 (0x00007fa2220d5000)<br>        libc.so.6 =&gt; /lib64/libc.so.6 (0x00007fa221d18000)<br>        /lib64/ld-linux-x86-64.so.2 (0x00007fa22332d000)</div><div><br></div><div>Вопрос: какие пакеты нужны для того, чтобы скомпилировать это же приложение статически?</div><div><br></div><div>Установки только glibc-devel-static и gmp-devel-static оказывается явно недостаточно.<br></div></div>