cryptopp 外部库依赖 [英] cryptopp foreign library dependency

查看:46
本文介绍了cryptopp 外部库依赖的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试在 Arch Linux (3.12.9) 上通过 cabal 安装 happstack-server-tls 包,但出现此错误:

I tried to install happstack-server-tls package via cabal on Arch Linux (3.12.9), but got this error:

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++.但这对我没有帮助.

After seeing this error message for the first time, I have installed crypto++ via pacman. But it didn't help me.

我什至试过这个:

$ 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 文件:

I checked, if crypto++ lib works with this test.cpp file:

#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 编译得很好.

And with g++ -g3 -ggdb -O0 -Wall -Wextra -Wno-unused -o test test.cpp -lcryptopp -pthread test.cpp compiled well.

然后我试着

$ cd /usr/lib
$ g++ -fpic -nostartfiles -nostdlib -shared libcryptopp.so -o libcryptopp.dylib

但是,仍然没有运气.

有人遇到过这个问题吗?有什么解决办法吗?

Have someone faced this problem? Has it any solutions?

推荐答案

运行 cabal unpack happstack-server-tls 以获取并解压本地目录中的源代码.然后编辑 happstack-server-tls.cabal 并尝试删除这些行:

run cabal unpack happstack-server-tls to fetch and unpack the source code in a local directory. Then edit the happstack-server-tls.cabal and try removing these lines:

if !os(darwin)
    Extra-Libraries: cryptopp

这篇关于cryptopp 外部库依赖的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆