使用Ubuntu提供的Crypto++进行编译

9

我尝试使用apt-get安装Crypto++:sudo apt-get install libcrypto++-dev libcrypto++-doc libcrypto++-utils。然后我尝试编译非常简单的程序,例如:

#include <iostream>
#include "aes.h"
#include "modes.h"

using namespace std;
using namespace CryptoPP;

int main()
{
    cout << "Yo, man!" << endl;
    return 0;
}

这导致出现了致命错误: aes.h: 没有那个文件或目录

我是新的Ubuntu用户(之前使用Windows),所以我做了一些研究,但大多数人都说键入一个命令就足以获取带有Crypto++库的存储库并使其工作。但在我的情况下不是这样。

2个回答

11

如果您按照您所说的方式安装了该库(使用apt-get),那么请尝试以下操作:

#include <crypto++/aes.h>
#include <crypto/modes.h>

不是这样做:

#include "aes.h"
#include "modes.h"

由于Ubuntu将它们安装在其“系统”中,因此您应该使用#include <crypto++/...>,这意味着预处理器在处理它们时会按特定顺序在特定位置查找。此外,请参见#include和#include“filename”之间的区别是什么?

另外请注意,在Fedora和Red Hat上,您应该使用#include <cryptopp/...>而不是#include <crypto++/...>。如果您针对多个操作系统使用Crypto++,则请参见如何使用autotools更改包含文件路径?


0
请确保在编译命令中也包含-lcryptopp标志!

1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接