我正在努力从RFC 2617编译一个简单的C程序。该程序为digtest.c
,它使用digcalc.c
,这是示例实现中的另一个文件。后者取决于我的编译器不知道的两个文件:
#include <global.h>
#include <md5.h>
起初我收到了这个错误:
digcalc.c:5:20:致命错误:global.h:没有这样的文件或目录
通过将<global.h>
更改为<stddef.h>
,我似乎已经解决了这个问题。但我仍然得到这个错误:
digcalc.c:7:17:致命错误:md5.h:没有这样的文件或目录
现在,md5.h似乎引用了libbsd中的文件。所以我安装了libbsd-dev
并尝试编译这样的文件:
gcc digcalc.c digtest.c -o digtest -L/usr/lib/x86_64-linux-gnu -lbsd
其中/usr/lib/x86_64-linux-gnu
是libbsd.so和libbsd.a文件的位置。但是,这不能解决上次编译错误。
有人能指出我在这里缺少什么吗?
答案 0 :(得分:0)
想出来。如libbsd页上所述,必须将<md5.h>
更改为<bsd/md5.h>
。
而不是digcalc.c
中的原始标头:
#include <global.h>
#include <md5.h>
我用过:
#include <stddef.h>
#include <bsd/md5.h>
还必须将函数stricmp
更改为strcasecmp
,其POSIX等效。之后,示例代码无缝编译。