• ベストアンサー

コンパイルできない...

学校のC言語のレポートを家でやろうと思ったのですが、ソースコードを変更していないのにコンパイル時にエラーがでます。おそらく環境の違いによるものだと思うのですが、そのへんには非常に疎いもので教えていただけないでしょうか? 実行したコンパイルは gcc -g -o abc abc.c fft.o -lm です。 学校はRed Hat Linuxで自宅はWindowsなのでcygwinを用いています。エラー文ではfft.oがうまく取り込めていないみたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

fft.oがないか、fft.oがLinux用にコンパイルされたものだからではないでしょうか。 CygwinとLinuxでは、オブジェクトファイルの形式も違えば、内部的に利用しているライブラリやランタイムも異なります。

fantagrape
質問者

お礼

ありがとうございます。 おそらくその通りだと思います。 fft.oをそのままコピーしてました。この場合fftのソースがないと無理ということですよね?

その他の回答 (4)

  • entree
  • ベストアンサー率55% (405/735)
回答No.5

エラーが出て困ってるのであれば、エラーメッセージくらい貼り付けてはいかがですか? 「できない」だけで回答が出て来ないのは言うまでもないでしょう。

fantagrape
質問者

補足

ごもっともです。 /tmp/ccYzsLlP.o(.text+0x31d): In function `main': /home/sohda/Voice/kadai2.c:85: undefined reference to `_fft' fft.o(.text+0x63): In function `make_sintbl': : undefined reference to `sin' fft.o(.text+0x8f): In function `make_sintbl': : undefined reference to `sqrt' fft.o(.text+0x15e): In function `make_sintbl': : undefined reference to `sqrt' fft.o(.text+0x2dc): In function `fft': : undefined reference to `free' fft.o(.text+0x2f6): In function `fft': : undefined reference to `free' fft.o(.text+0x31e): In function `fft': : undefined reference to `malloc' fft.o(.text+0x335): In function `fft': : undefined reference to `malloc' fft.o(.text+0x35d): In function `fft': : undefined reference to `stderr' fft.o(.text+0x362): In function `fft': : undefined reference to `fprintf' collect2: ld returned 1 exit status

  • ejty110
  • ベストアンサー率15% (4/26)
回答No.4

Cygwinなら gcc ファイル名.c -o 名前.outで動くと思いますけど ちょいと試してみてください。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

> この場合fftのソースがないと無理ということですよね? 基本的にはそうです。 fft.oの素性がわかりませんが、もしかするとCygwin用のオブジェクトファイルやライブラリが入手できるかもしれません。その場合はソースは不要です。 また、名前からして高速フーリエ変換だと思うので、自作しても知れているかと思います。

回答No.1

fft.oが無いからです。 エラーの種類は、おそらくリンクエラーだと思います。

fantagrape
質問者

お礼

ありがとうございます。 ただfft.oは存在しています。