2017-11-25 4 views
0

私はDon KnuthからCWEBプログラムをダウンロードしました。具体的には http://www-cs-faculty.stanford.edu/~knuth/programs/sliding.wです。 sliding.wsliding.cに変換しました。 は今、私は使用してそれをコンパイルしようとしている:KnuthからCWEBプログラムをコンパイルする

gccのsliding.c -oを

をスライディングしかし、私は得る:

./sliding.w:116:1: warning: return type defaults to ‘int’ [-Wimplicit-int] 
main(int argc, char *argv[]) 
^ 
/tmp/cc9NVnXq.o: In function `main': 
sliding.c:(.text+0x2006): undefined reference to `gb_init_rand' 
sliding.c:(.text+0x201c): undefined reference to `gb_fptr' 
sliding.c:(.text+0x202b): undefined reference to `gb_fptr' 
sliding.c:(.text+0x2036): undefined reference to `gb_fptr' 
sliding.c:(.text+0x2047): undefined reference to `gb_flip_cycle' 
collect2: error: ld returned 1 exit status 

誰も私を助けることができますか?

+2

'gb_flip.h'が対応するものをリンクする必要があります。 – Ryan

+1

コンパイラ警告は、生成されたコードがC90用であり、C99用ではなくC11用ではないことを意味します(ただし、Cコンパイラ-GCC - デフォルトはC11モードですので、警告が必要です)。 'main()'の戻り値の型は 'int'ですが、C99以降、あなたは同じように宣言する必要があります。 'sliding.w'ファイルを見てください。 'int'なしで書かれたコードは?もしそうなら、修正してください。そうでない場合は、 'main()'の定義がどこから来たのかを調べなければなりません。 (しかし、 'sliding.w'の簡単な見方は' main() 'から' int'を省略していることを示しています - 最新のCでは更新が必要です) –

答えて

1

最初の問題は単なる警告です。あなたはこのように一緒に.cファイルの両方をコンパイルした後、.cファイルにgb_flip.wをコンパイルする必要があるので、最初の

http://ftp.cs.stanford.edu/pub/sgb/gb_flip.w

:致命的なエラーが、あなたはここで定義されているgb_シンボルが、不足しているされています。

gcc sliding.c gb_flip.c -o sliding 
+1

'ただの警告' - はい、無視される。 –

+0

それは働いた!それは間違いなくコンパイルされました。 –

関連する問題