Функции шаблона Wai не могут найти Libz.so
<command line>: can't load .so/.DLL for: libz.so (libz.so: cannot open shared object file: no such file or directory)
Это ошибка, которую я получаю при попытке установить некоторые библиотеки WAI:
- Вай-приложение статическую-3.1.6.2
- Вай-WebSockets-3.0.1.2
Похоже, это связано с тем, что Template Haskell испытывает проблемы с динамическим связыванием. Другие пакеты, которые ссылаются на zlib (или libz, или z, или libz1g, или какой-либо другой вариант менеджера пакетов месяца, выбранный для вызова стандартной библиотеки сжатия), работают нормально, это только те, которые пытаются динамически ссылаться на него при компиляции. время.
Я использовал nix-env -i zlib && nix-shell -p zlib
я сделал apt-get install
на zlib1g
, zlib1g-dev
, lib32z1
, zlib1g:i386
, libc6-i386, lib32stdc++6
, lib32gcc1
, lib32ncurses5
(?!) как предложено другим вопросом zlib.
whereis libz.so
дает /usr/lib/x86_64-linux-gnu/libz.a /usr/lib/x86_64-linux-gnu/libz.so
так что я думаю, что библиотека на самом деле установлена.
Я получил урезанную версию работы wai-app-static, удалив весь код TH, но я не могу извлечь его из wai-websockets, не нарушив весь пакет.
Кто-нибудь нашел способ заставить эти библиотеки устанавливать, желательно с Nix, но на этом этапе я могу это сделать. В течение трех дней я пытался получить работающую сборку и потратил целое недельное проектное время, не написав ни единой строчки своего собственного кода. Я возьму любой взлом, который будет работать на этом этапе.
Кто-то спросил об используемой командной строке. Вот как генерируется клика:
/home/jfmiller28/.nix-profile/bin/ghc --make -fbuilding-cabal-package -O -static -dynamic-too -dynosuf dyn_o -dynhisuf dyn_hi -outputdir dist/build -odir dist/build -hidir dist/build -stubdir dist/build -i -idist/build -i. -idist/build/autogen -idist/build/global-autogen -Idist/build/autogen -Idist/build/global-autogen -Idist/build -optP-include -optPdist/build/autogen/cabal_macros.h -this-unit-id wai-app-static-3.1.6.2-LkSB3kK5rpLKV2jrN2AtNR -hide-all-packages -Wmissing-home-modules -package-db dist/package.conf.inplace -package-id base-4.10.0.0 -package-id wai-3.2.1.2-i068T7XVUlLxs3fKcREfc -package-id bytestring-0.10.8.2 -package-id http-types-0.12.1-2xWgExX0qOl7yKh7LxUBE2 -package-id transformers-0.5.2.0 -package-id unix-compat-0.5.1-1iiashTJMVo4Z2Bo2H1Lus -package-id directory-1.3.0.2 -package-id containers-0.5.10.2 -package-id time-1.8.0.2 -package-id old-locale-1.0.0.7-7dfSJrRIye3EgzsPnyvNPA -package-id file-embed-0.0.11-8MbWlMh1peh6Y3L9VmTvZW -package-id text-1.2.3.0-1kNDH38DjPO1AsUcP35BNj -package-id cryptonite-0.25-GXzdjgRkEVOKY7fpyz8xaf -package-id memory-0.14.16-5MukHHE9BjI5qglqVrRBGo -package-id http-date-0.0.8-CG5y9eYkeUn6wOfbHom4pU -package-id blaze-html-0.9.1.1-CsJ11WXjlLxBrTMbayeoQA -package-id blaze-markup-0.8.2.1-I4KSuVAN6lL9BOh5kJrkji -package-id mime-types-0.1.0.8-2EwGkNBk8W7Io9sTyOvZ5e -package-id unordered-containers-0.2.9.0-EAgi4LFNl39D8BgT0rhlvy -package-id template-haskell-2.12.0.0 -package-id zlib-0.6.2-KD4SSz9PUL57YfOUBW0y3t -package-id filepath-1.4.1.2 -package-id wai-extra-3.0.24.2-18RlcgWRZiDEaepZgYOTPU -package-id optparse-applicative-0.12.1.0-9EJm9hUjsSHG4weMNInJgv -package-id warp-3.2.23-590EqUmbUTP1AQ3mjwuKbZ -XHaskell98 -XCPP Network.Wai.Application.Static WaiAppStatic.Storage.Filesystem WaiAppStatic.Storage.Embedded WaiAppStatic.Listing WaiAppStatic.Types WaiAppStatic.CmdLine Util WaiAppStatic.Storage.Embedded.Runtime WaiAppStatic.Storage.Embedded.TH -Wall
1 ответ
Я чувствую твою боль.
Вы, наверное, уже пробовали это, но вот несколько случайных идей:
- Убедитесь, что символическая ссылка /usr/lib/x86_64-linux-gnu/libz.so по-прежнему имеет действительную цель.
- Добавьте "-L /usr/lib/x86_64-linux-gnu" в командную строку.
- Попробуйте использовать -rpath в командной строке компоновщика ( ftp://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_node/ld_3.html), хотя это, вероятно, не поможет.
- Убедитесь, что архитектура компилятора действительно x86_64-linux-gnu (gcc -print-multiarch).
Если я еще подумаю, я вернусь.:-)
Это может (или не может) помочь, если вы можете опубликовать командную строку verbatim gcc.