gpt4 book ai didi

使用 mhash 编译程序

转载 作者:行者123 更新时间:2023-12-03 17:58:27 26 4
gpt4 key购买 nike

我正在尝试使用 lessfs 并了解它如何使用 mhash 来生成其加密指纹,所以我正在查看 mhash 以了解它如何处理哈希算法,因此我正在尝试运行中提供的一些示例程序,但我遇到了并发症和错误

我试图解决的 Mhash 示例可在此处找到:http://mhash.sourceforge.net/mhash.3.html (或以下)

#include <mhash.h>
#include <stdio.h>

int main()
{

char password[] = "Jefe";
int keylen = 4;
char data[] = "what do ya want for nothing?";
int datalen = 28;
MHASH td;
unsigned char *mac;
int j;


td = mhash_hmac_init(MHASH_MD5, password, keylen,
mhash_get_hash_pblock(MHASH_MD5));

mhash(td, data, datalen);
mac = mhash_hmac_end(td);

/*
* The output should be 0x750c783e6ab0b503eaa86e310a5db738
* according to RFC 2104.
*/

printf("0x");
for (j = 0; j < mhash_get_block_size(MHASH_MD5); j++) {
printf("%.2x", mac[j]);
}
printf("\n");


exit(0);
}

但是我得到以下错误:

mhash.c.text+0x6c): undefined reference to `mhash_get_hash_pblock'
mhash.c.text+0x82): undefined reference to `mhash_hmac_init'
mhash.c.text+0x9c): undefined reference to `mhash'
mhash.c.text+0xa8): undefined reference to `mhash_hmac_end'
mhash.c.text+0xf9): undefined reference to `mhash_get_block_size'
collect2: error: ld returned 1 exit status

最佳答案

这是一个 linker错误 — ld 是 Unix 系统上的链接器程序。链接器提示是因为您正在使用库函数( mhash_get_hash_pblock 等)但您没有为它们提供定义。

预处理器指令 #include <mhash.h> 声明 mhash 库中的函数(和类型等)。这足以编译您的程序(生成一个 .o 文件)但不能链接它(生成一个可执行文件):您还需要定义这些函数。

添加-lmhash在编译命令行的末尾。这指示链接器可以在库中查找函数 libmhash.a在其搜索路径上;在运行时,函数将从 libmhash.so 加载在搜索路径上。请注意,库必须在使用后出现在命令行中:链接器建立所需函数的链接,需要由后续参数提供。

gcc -o myprogram myprogram.c -lmhash

关于使用 mhash 编译程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24561776/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com