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

Including libraries in G++ using -l confusion

本文关键字:G++ 包含库 使用      更新时间:2023-10-16

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

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

#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告诉链接器将您的exe链接到动态库(共享对象)文件libcryptopp.so。GNU链接器在各种目录中搜索共享对象文件,如/lib/usr/lib等。

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