设置加密++

时间:2015-05-23 11:41:40

标签: c++ c++11 gcc crypto++

我下载了crypto ++ 5.6.2(zip文件)并使用make构建了它(我有gcc 4.8.1)。它似乎工作,并给了我一个libcryptopp.a文件。

现在,为了测试设置,我尝试编译随下载提供的test.cpp文件(链接在这里:http://www.cryptopp.com/docs/ref/test_8cpp_source.html)。

首先,我用

编译它

g++ -Wall -std=c++11 -g -Iinclude -I/c/libraries/cryptopp562 -c test.cpp -o obj/test.o

提出了很多警告(主要是弃用和未使用的变量),但是工作正常,我得到了test.o文件。

现在,为了链接它,我使用了

g++ obj/test.o -o bin/test -L/c/libraries/cryptopp562 -lcryptopp

但这会导致很多undefined reference错误并失败。

例如

D:\.../test.cpp:119: undefined reference to `RegisterFactories()'

但是当你查看test.cpp文件(http://www.cryptopp.com/docs/ref/test_8cpp_source.html)时,只有RegisterFactories()的声明,但没有定义。这是否意味着,需要从图书馆中找到它? (在这种情况下不需要本地声明,不是吗?)

好的,那么我需要做些什么来让整个图书馆工作?使用gmake构建它?或者使用较旧的gcc?或者我的编译/链接命令可能不正确?

2 个答案:

答案 0 :(得分:2)

  

设置crypto ++

在Linux下设置Crypto ++的说明在Build and Install the Library的维基上。

  

...为了测试设置,我尝试编译test.cpp ...

如果您想构建测试套件,则运行make cryptest.exe

如果要在构建测试套件后运行它,请运行./cryptest.exe v

  

undefined reference to RegisterFactories()

测试套件中使用了9个源文件。他们是:

  • validate.h,bench.h
  • test.cpp,datatest.cpp
  • bench.cpp,bench2.cpp
  • validat1.cpp,validat2.cpp,validat3.cpp
  

...我需要做些什么来让整个图书馆工作?

make cryptest.exe./cryptest.exe v通常可以正常工作:)

我通常运行make static dynamic cryptest.exe来构建静态存档和共享对象。

您还可以使用tv命令运行单个测试。例如,./cryptest.exe tv sha1将运行与SHA-1相关的测试。 tv是“测试向量”,它们位于源的“TestVectors”目录中。

相关,如果您希望测试套件在安装后运行,那么您将需要DataDir Patch

它是由社区提供的补丁。它不是Crypto ++库的一部分(尽管它可能应该是库的一部分)。

答案 1 :(得分:0)

test.cpp不是自包含的。它使用了很多其他文件。实际上它已经在构建中使用(参见GNUmakefile)。构建之后,生成libcryptopp.a和cryptest.exe。 test.cpp用于构建cryptest.exe。

您提到的具体功能在regtest.cpp中定义。它还在其他C ++文件中使用了许多其他函数。