我尝试在Arch Linux(3.12.9)上通过cabal安装happstack-server-tls
软件包,但是出现了这个错误:
Resolving dependencies...
Configuring happstack-server-tls-7.1.0...
Failed to install happstack-server-tls-7.1.0
Last 10 lines of the build log ( /home/boris/.cabal/logs/happstack-server-tls-7.1.0.log ):
Configuring happstack-server-tls-7.1.0...
/bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
setup-Cabal-1.16.0-x86_64-linux-ghc-7.6.3: 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-tls-7.1.0 failed during the configure step. The exception
was:
ExitFailure 1
第一次看到此错误消息后,我通过pacman安装了crypto++
。但它没有帮助我。
我甚至试过这个:
$ whereis libcryptopp.a
libcryptopp: /usr/lib/libcryptopp.so
$ cabal install happstack-server-tls --extra-include-dirs=/usr/lib/ --extra-lib-dirs=/usr/lib/
但仍然没有运气。
我查了一下,如果crypto ++ lib适用于这个test.cpp文件:
#include <iostream>
using std::cout;
using std::endl;
#include "cryptopp/integer.h"
using CryptoPP::Integer;
int main( int, char** ) {
Integer i;
cout << "i: " << i << endl;
return 0;
}
并且g++ -g3 -ggdb -O0 -Wall -Wextra -Wno-unused -o test test.cpp -lcryptopp -pthread
test.cpp编译得很好。
然后我试着
$ cd /usr/lib
$ g++ -fpic -nostartfiles -nostdlib -shared libcryptopp.so -o libcryptopp.dylib
但又一次,仍然没有运气。
有人遇到过这个问题吗?它有什么解决方案吗?
答案 0 :(得分:2)
运行cabal unpack happstack-server-tls
以获取并解压缩本地目录中的源代码。然后编辑happstack-server-tls.cabal
并尝试删除这些行:
if !os(darwin)
Extra-Libraries: cryptopp