2011-11-05 14 views
0

私はcywinを使用しているウィンドウでcrashmeソースコードをコンパイルしていますが、コンパイルエラーが発生しています。組み込み関数 'execl'に互換性のないコンパイルエラーがあります

エラー:

crashme.c: In function 'vfork_main': 
crashme.c:594: warning: incompatible implicit declaration of built-in function ‘execl’ 

ソースコードがunistd.h含まれていたが、それでもエラーが持続するけど。この問題を解決する方法を教えてください。 execlを定義"システム"ヘッダ(Linux上すなわち<unistd.h>)の

答えて

2

おそらく欠落#include

何が含まれているか調べるには、gcc -H -c foo.cを使用してgcc -C -E -Wall foo.c > foo.iを使用して、前処理済みのフォームを取得します。

+0

私は/ usr/includeの下でチェックしました。ヘッダーファイルはそこにあります。 – msk

+0

先ほど説明したように前処理されたフォームを取得し、それを調べます( 'execl'を検索します)。 –

+0

@ user1031345待ち、/ usr/includeの下にあるチェックは、ヘッダがそのディレクトリにあるか、あなたの_code_ '#include'がそのヘッダであることを確認したことを意味しますか? – Arkku

1

ソースは、にはunistd.hが含まれていません。

私はcrashme.zipを開けませんでしたが、部分的には unpack crashme.tgzでした。もちろんシンボルlinuxが定義されていないので、あなたは、ない LinuxシステムでのCygwin上でコンパイルしている

#ifdef linux 
#include <unistd.h> 
#endif 

crashme.cは、以下の(行150-152)を持っています。その結果、#include <unistd.h>はスキップされます。

<unistd.h>は、LinuxだけでなくすべてのUnixライクな(つまりPOSIX)システムで利用できるはずです。ソースのコメントは、SunOS 4.1.1や他のいくつかのUnixシステムで使用されていることを示しています。

#ifdef linux#endif行のコメントはすぐに問題を解決するはずですが、他の問題がそれに潜んでいる可能性はありません。これは、Cygwinの下でこれを動作させるための努力のいくつかの未知の量を取るつもりです。

+0

ありがとうトムソン、私はifdef/endif行をコメントアウトしてコンパイルしようとします。 – msk

0

私は最近、Mac OS X LionとXcodeコマンドラインツールで動作するソースコードをhttp://crashme.codeplex.com/に更新しました。これにより、64ビットx64アーキテクチャでより強力なものになりました。しかし、Windowsでは、事前コンパイル済みのWindowsインストーラmsiファイルを使用してcygwinの代わりにネイティブのWindowsポートを使用することをお勧めします。 Codeplexサイトでバグや問題を報告することができます。

関連する問題