2012-01-26 5 views
5

Próbuję zainstalować najnowszy serwer happstack na osx. Po prostu dodali zależność od libcryptopp i nie mogę jej uruchomić.Zainstaluj happstack-server 6.5.3 na osx - brak libcryptopp

~$ cabal install happstack-server 
Resolving dependencies... 
Configuring happstack-server-6.5.3... 
cabal: Missing dependency on a foreign library: 
* Missing C library: cryptopp 
This problem can usually be solved by installing the system package that 
provides this library (you may need the "-dev" version). If the library is 
already installed but in a non-standard location then you can use the flags 
--extra-include-dirs= and --extra-lib-dirs= to specify where it is. 
cabal: Error: some packages failed to install: 
happstack-server-6.5.3 failed during the configure step. The exception was: 
ExitFailure 1 

Więc potem zainstalować libcryptopp DarwinPorts, co stawia libcryptopp.a w/opt/local/lib

sudo port install libcryptopp 

Potem ponownie zainstalować happstack-serwer z --extra-lib-katalogów

cabal install happstack-server --extra-lib-dirs=/opt/local/lib 

instaluje w porządku, wszystko wydaje się działać, dopóki nie faktycznie run happstack serwerze.

~$ runhaskell Hello.hs 
Hello.hs: <command line>: can't load .so/.DLL for: libcryptopp.dylib (dlopen(libcryptopp.dylib, 9): image not found) 

Co robię źle? Czy jest to błąd z happstack? Nie mam nawet .dylib po zainstalowaniu lib przez macports, tylko a .a. ghc --make Hello.hsis even crazier

+0

Opcja 'Hello.hs' błędy są prawdopodobnie z powodu niewłaściwej biblioteki 'iconv'. Ciągle zapominam, które, ale myślę, że system nie działa z Haskell, musisz zainstalować macports 'iconv'. Lub na odwrót. Mac to trochę bałaganu, ponieważ wydaje się, że jest tak wiele różnych sposobów instalowania pakietów i miejsc, w których się znajdują. Ale jeśli to rozgryzłeś, słyszę, że działa ładnie. –

Odpowiedz

2

jako podejście brute-force, można wyłączyć flagę https w .cabal akt happstack-server:

Plik: happstack-server.cabal:

Flag https 
    Default: False 

configure/build/Zainstaluj ręcznie: happstack-server, cabal install happstack.


(używam ArchLinux, --extra-lib-katalogi nawet nie działa!)

+0

Uwaga Nie próbowałem tego, ale zakładam, że działa. Zamiast tego zmieniłem serwery aplikacji :) –

+0

@Sean Clark Hess: Napisałeś, spróbowałem 'happstack-server' 6.4. *, Który działa. :) – Nybble

7

Jak o:

g++ -fpic -nostartfiles -nostdlib -shared /usr/local/Cellar/cryptopp/5.6.1/lib/libcryptopp.a -o libcryptopp.dylib

+0

Dzięki! Jest to znacznie lepsze niż próba rozwiązania problemu bezpośrednio w plikach cryptopp! –