如何正确链接.a库文件及其标题?

时间:2017-11-12 22:28:29

标签: c++ g++ static-linking

我正在使用此bcrypt库进行密码散列。我使用提供的makefile生成一个名为bcrypt.a的库文件。我的代码中也有头文件,我使用类(Cryto.h / Crypto.cpp)来创建头函数的包装器。我正在尝试使用.a库文件编译我的代码:

 g++ -std=c++14 -o geemail auth/auth.cpp services/services.cpp crypto/crypto.cpp  database/database.cpp main.cpp libraries/bcrypt/bcrypt.a -lsqlite3 -lsodium

我已经在我的crypto.h文件中包含了我的头文件(bcrypt.h),它具有正确的函数定义。但是当我运行上面的命令时,我一直收到这个错误。

/tmp/ccM1cHRo.o: In function `Crypto::CompareHash(char const*, char const*)':
crypto.cpp:(.text+0x23): undefined reference to `bcrypt_checkpw'
/tmp/ccM1cHRo.o: In function `Crypto::GetGeneratedHash[abi:cxx11](char 
const*, char*, char*)':
crypto.cpp:(.text+0x63): undefined reference to `bcrypt_gensalt'
crypto.cpp:(.text+0x7a): undefined reference to `bcrypt_hashpw'
collect2: error: ld returned 1 exit status

看起来它无法找到bcrypt.h文件中声明的任何函数,即使正确包含了标头。链接这些文件的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

试试这个:

g++ -std=c++14 -o geemail auth/auth.cpp services/services.cpp crypto/crypto.cpp  database/database.cpp main.cpp -Llibraries/bcrypt -lbcrypt -lsqlite3 -lsodium