- ベストアンサー
コンパイルできない...
学校のC言語のレポートを家でやろうと思ったのですが、ソースコードを変更していないのにコンパイル時にエラーがでます。おそらく環境の違いによるものだと思うのですが、そのへんには非常に疎いもので教えていただけないでしょうか? 実行したコンパイルは gcc -g -o abc abc.c fft.o -lm です。 学校はRed Hat Linuxで自宅はWindowsなのでcygwinを用いています。エラー文ではfft.oがうまく取り込めていないみたいです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
fft.oがないか、fft.oがLinux用にコンパイルされたものだからではないでしょうか。 CygwinとLinuxでは、オブジェクトファイルの形式も違えば、内部的に利用しているライブラリやランタイムも異なります。
その他の回答 (4)
- entree
- ベストアンサー率55% (405/735)
エラーが出て困ってるのであれば、エラーメッセージくらい貼り付けてはいかがですか? 「できない」だけで回答が出て来ないのは言うまでもないでしょう。
補足
ごもっともです。 /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)
Cygwinなら gcc ファイル名.c -o 名前.outで動くと思いますけど ちょいと試してみてください。
- jacta
- ベストアンサー率26% (845/3158)
> この場合fftのソースがないと無理ということですよね? 基本的にはそうです。 fft.oの素性がわかりませんが、もしかするとCygwin用のオブジェクトファイルやライブラリが入手できるかもしれません。その場合はソースは不要です。 また、名前からして高速フーリエ変換だと思うので、自作しても知れているかと思います。
- ekuko_ecch
- ベストアンサー率17% (16/91)
fft.oが無いからです。 エラーの種類は、おそらくリンクエラーだと思います。
お礼
ありがとうございます。 ただfft.oは存在しています。
お礼
ありがとうございます。 おそらくその通りだと思います。 fft.oをそのままコピーしてました。この場合fftのソースがないと無理ということですよね?