Я думаю, что Snap тянет много зависимостей. Одно из решений этой проблемы, которое, к сожалению, влияет на (исходное) время компиляции, - это установить библиотеки , которые зависят от вашего проекта от с опцией --split-objs. Это создаст тонну другого объекта, но сделает окончательный исполняемый файл намного меньшим, как в 2-4 раза меньше.
$ cabal install --enable-split-objs
Если у вас уже есть библиотеки установлены, вам нужно будет удалить их первых, установить новую GHC или использовать песочницу с собственным набором пакетов.
Вы также должны использовать команду strip
(в некоторых случаях это происходит автоматически).
Кроме того, вы можете использовать upx
для сжатия исполняемых файлов и, наконец, rsync
для загрузки минимально различных исполняемых файлов на сервер.
Использование общих библиотек (cabal install --enable-shared
) может или не может помочь здесь: я не экспериментировал с этой опцией.
Это как-то проблема? Будет ли использование разделяемых библиотек заставлять вас чувствовать себя лучше? –
Ну, я должен загрузить 20 МБ над медленным подключением 'scp' к моему экземпляру EC2 каждый раз, когда хочу сделать небольшое изменение ... – drozzy
Так звучит, что вы должны использовать общие библиотеки, чтобы вырезать дублирование. –