我正在使用cywin在windows上编译crashme源代码,我正面临一些编译错误。
错误:
crashme.c: In function 'vfork_main':
crashme.c:594: warning: incompatible implicit declaration of built-in function ‘execl’
虽然源代码包含了unistd.h,但仍然存在错误。请帮助我解决这个问题。
答案 0 :(得分:3)
可能缺少#include
“system”标头定义execl
(即Linux上的<unistd.h>
)。
要了解其中包含的内容,请使用gcc -H -c foo.c
并使用gcc -C -E -Wall foo.c > foo.i
获取预处理表单。
答案 1 :(得分:1)
源 包含unistd.h
。
我无法打开crashme.zip
,但我能够部分解包crashme.tgz
。
crashme.c
有以下内容(第150-152行):
#ifdef linux
#include <unistd.h>
#endif
您正在编译Cygwin,它不是 Linux系统,所以当然没有定义符号linux
。因此,会跳过#include <unistd.h>
。
这是令人惊讶的,因为<unistd.h>
应该可用于所有类Unix系统(即POSIX),而不仅仅是Linux - 并且源代码中的注释表明它已在SunOS 4.1.1和其他几个系统上使用Unix系统。
评论#ifdef linux
和#endif
行应解决当前问题,但我不知道其背后可能存在哪些其他问题。要在Cygwin下工作,需要花费一些未知的努力。
答案 2 :(得分:0)
我最近更新了http://crashme.codeplex.com/源代码以使用Xcode命令行工具在Mac OS X Lion上工作,并进行了更改以使其在64位x64架构上更有效。但在Windows下我建议使用本机Windows端口而不是cygwin,使用预编译的Windows安装程序msi文件。您可以在codeplex站点上报告错误/问题。