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

时间:2016-01-15 22:12:11

标签: c++ g++

我正在尝试使用外部库,但我很困惑它们是如何组合在一起的。

我有以下代码,我正在尝试做的就是编译:

#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文件夹中查找?

1 个答案:

答案 0 :(得分:4)

-lcryptopp告诉链接器将您的exe与动态库(共享对象)文件libcryptopp.so相关联。 GNU链接器在/lib/usr/lib等其他目录中搜索共享对象文件。

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