试图编译生成 sha1 哈希的程序
Posted
技术标签:
【中文标题】试图编译生成 sha1 哈希的程序【英文标题】:trying to compile the program which generates sha1 hashes 【发布时间】:2021-12-13 22:09:35 【问题描述】:我正在尝试编译这个程序https://gist.github.com/jrabbit/1042021 我正在使用这个https://doc.opensuse.org/projects/satsolver/11.2/sha1_8h_source.html sha1.h 文件。但是,如果我尝试编译程序 gcc 会给我以下错误(Windows 上的 gcc)
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libmingw32.a(main.o):(.text.start up+0xa0): 未定义的对 `WinMain@16' 的引用 collect2.exe:错误:ld 返回 1 个退出状态
gcc 无法识别类型 u_int32_t,所以我在 sha1.c 代码中将它们更改为 unit32_t
那里可能有什么问题?
【问题讨论】:
报错说你没有main
函数。
是的 main() 函数被注释为@HolyBlackCat 所说。尝试取消注释它。删除第 251 行的 #if 0 和第 276 行的 #endif。
【参考方案1】:
库没有main
函数。任何 C 程序都必须有一个 main
函数才能编译。
所以要么创建一个main.c
文件并将库包含在其中。
或者在sha1.c
的第251 行将#if 0
更改为#if 1
,这将打开包含在库中的模板主函数。
请注意,模板 'main` 函数存在一些错误。用类似的东西替换它:
#define BUFSIZE 10
int
main(int argc, char **argv)
SHA1_CTX ctx;
unsigned char hash[20], buf[BUFSIZE];
int i;
for(i=0;i<BUFSIZE;i++)
buf[i] = i + '0';
printf("%i", i);
printf("\n");
SHA1Init(&ctx);
for(i=0;i<BUFSIZE;i++)
SHA1Update(&ctx, buf + i, 1);
SHA1Final(hash, &ctx);
printf("SHA1=");
for(i=0;i<20;i++)
printf("%02x", hash[i]);
printf("\n");
return 0;
【讨论】:
以上是关于试图编译生成 sha1 哈希的程序的主要内容,如果未能解决你的问题,请参考以下文章
如何生成随机 SHA1 哈希以用作 node.js 中的 ID?