0
我正在嘗試將bcrypt實現到一個我發現的開源項目中,更多的是學習東西。我的git克隆https://github.com/rg3/bcrypt和移動bcrypt.h bcrypt.c
和crypto_blowfish
到我的項目文件,然後在我的文件database.c
我已經我已經包含了一個頭文件,但是在嘗試運行make時仍然未定義
include "bcrypt.h"
然後當我運行make
我得到:
database.c: 2084:未定義的引用`bcrypt_checkpw」
這是我如何使用它
int ret;
ret = bcrypt_checkpw(pass, row[0]);
assert(ret != -1);
if (ret == 0) {
return 1;
} else {
return 2;
}
我有一個Makefile
我不知道如果我這樣做是正確的,但我加bcrypt.h
到makefile文件
.obj/database.o: database.c bcrypt.h server.h log.h create.h player.h sleep.h tool.h drdata.h drvlib.h timer.h direction.h map.h mem.h database.h misc_ppd.h badip.h
所有編譯
gcc -O -g -m32 -rdynamic -L/usr/lib/mysql -o server .obj/server.o .obj/io.o .obj/libload.o .obj/tool.o .obj/sleep.o .obj/log.o .obj/create.o .obj/notify.o .obj/skill.o .obj/do.o .obj/act.o .obj/player.o .obj/rdtsc.o .obj/los.o .obj/light.o .obj/map.o .obj/path.o .obj/error.o .obj/talk.o .obj/drdata.o .obj/death.o .obj/database.o .obj/see.o .obj/drvlib.o .obj/timer.o .obj/expire.o .obj/effect.o .obj/command.o .obj/date.o .obj/container.o .obj/store.o .obj/mem.o .obj/sector.o .obj/chat.o .obj/statistics.o .obj/mail.o .obj/player_driver.o .obj/clan.o .obj/lookup.o .obj/area.o .obj/task.o .obj/punish.o .obj/depot.o .obj/prof.o .obj/motd.o .obj/ignore.o .obj/tell.o .obj/clanlog.o .obj/respawn.o .obj/poison.o .obj/swear.o .obj/lab.o .obj/consistency.o .obj/btrace.o .obj/club.o .obj/teufel_pk.o .obj/questlog.o .obj/badip.o -lmysqlclient -lm -lz -ldl -lpthread
.obj/database.o: In function `load_char_pwd':
/home/ec2-user/astonia3_server/database.c:2084: undefined reference to `bcrypt_checkpw'
collect2: error: ld returned 1 exit status
make: *** [server] Error 1
請顯示完整的編譯器命令行。 – Bort
@你的意思是生成文件?要麼? – Datsik
這是一個鏈接器錯誤 - 您需要鏈接到定義函數的文件或庫。 (頭文件只包含一個聲明。) – molbdnilo