使用 -l 混淆在 G++ 中包含库

Including libraries in G++ using -l confusion

我正在尝试使用外部库,但我对它们如何组合在一起感到困惑。

我有以下代码,我想做的就是编译:

#include "cryptopp/sha.h"

int main()
{
    CryptoPP::SHA1 sha1;
    return 0;
}

我正在使用 g++ 进行编译,从我的研究中我收集到我需要追加

-lcryptopp

到编译命令的结尾,像这样:

g++ crypto.cpp -o crypto.exe -lcryptopp

但出现以下错误:

/usr/lib/gcc/x86_64-pc-cygwin/4.9.3/../../../../x86_64-pc-cygwin/bin/ld: 找不到 -lcryptopp

这是我感到困惑的地方,我不太确定 -lcryptopp 在寻找什么,它是否在寻找我在代码中包含的 sha.cpp/sha.h 文件?但更重要的是,我如何指定它要查找的内容,我只希望它在与我的主 .cpp 相同的文件夹中的 cryptopp 文件夹中查找?

-lcryptopp 告诉 linker link 你的 exe 与动态库(共享对象)文件 libcryptopp.so。 GNU linker 在 /lib/usr/lib 等各种目录中搜索共享对象文件。

您可以使用 -L 选项指定其他目录来搜索库文件,例如 -L/usr/local/lib。您应该找出您的库文件 libcryptopp.so 位于何处,并使用 -L 选项将路径传递给它。