- 締切済み
bccは分かりましたがgccが使えません
Cのソースの#include <stdio.h>でエラーになります。 gccではbccのbcc32.cfgで行うような設定はどのようにすればよいですか? MINGWのコンソールで $ echo $C_INCLUDE_PATH c:/msys/1.0/mingw/include;c:/msys/1.0/mingw/lib/gcc/mingw32/3.4.5/include このように出ます。 $ gcc myapp.c で#include <stdio.h>の行でコンパイルエラーです。 MINGWでは$C_INCLUDE_PATHを正しく設定できているみたいですが、gcc.exeにそれが伝わっていないみたいです。 AUTOEXEC.BATには何も追記したくないので何も追記していません。 どうすればライブラリのパスを通せますか?
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
う~ん, 「拡張子を c のままにしたい」と「どんなソースでもコンパイルできるようにしておきたい」がどのように関連するんでしょうか? 全くわかりません. オプションなしで強制的に C++ としてコンパイルすることは, GCC のソースをいじらない限り多分できないと思う. オプションは.... 調べたら -x だった. これは言語を指定するオプションなので「言語」を表す引数が必要. C++ なら c++ だ.
- Tacosan
- ベストアンサー率23% (3656/15482)
「拡張子を c のままにしたい」というのはなぜでしょうか? 「宗教上の理由」とか「先祖代々の言い伝え」とかでもない限り拡張子を変える方が簡単だし安全だと思います.
- Tacosan
- ベストアンサー率23% (3656/15482)
stream.h ということは C ではなくて C++ (のしかも古いやつ) ですね. ということでアドバイス: ・C++ なんだから, 「myapp.cc」のように拡張子を変更するか, あるいはオプションで言語を強制的に C++ にする (調べればわかるけど面倒なのでどんなオプションで指定するかは書かないことにする). ・今どき stream.h なんて古すぎ. 今どきは iostream などを使うのが常識.
補足
回答を見て拡張子をcppにするとできました。 ですので、強制的に C++ にする方法を試してもうまくできそうです。 拡張子cのまま、そのソースをgcc myapp.cでコンパイルできるように設定したいのですが、何とかできないでしょうか? iostreamのようなc++で定義された新しい仕様に慣れるためにそれを使う努力もしていましたが、難しいので今は従来のままでやっています。
- TERABIT
- ベストアンサー率44% (4/9)
gcc -v myapp.c の様にやってみましょう。 cpp がどこを探しに行っているかわかると思います。 (gcc.exe のある位置からの相対のようですが) それ以外に通したいのであれば、-I なり -L なりで指定すればいい気がしますが。
補足
-I や -L の指定方法を初心者向けの説明で教えてください。 $ gcc -v myapp.c Reading specs from C:/msys/1.0/mingw/lib/gcc/mingw32/3.4.5/specs Configured with: ../gcc-3.4.5/configure --with-gcc --with-gnu-ld --with-gnu-as - -host=mingw32 --target=mingw32 --prefix=/mingw --enable-threads --disable-nls -- enable-languages=c,c++,f77,ada,objc,java --disable-win32-registry --disable-shar ed --enable-sjlj-exceptions --enable-libgcj --disable-java-awt --without-x --ena ble-java-gc=boehm --disable-libgcj-debug --enable-interpreter --enable-hash-sync hronization --enable-libstdcxx-debug Thread model: win32 gcc version 3.4.5 (mingw special) cc1 -quiet -v -iprefix C:/msys/1.0/mingw/mingw32/3.4.5/ myapp.c -quiet -dumpbase myapp.c -auxbase myapp -version -o c:/windows/TEMP/cchea3fb.s ignoring nonexistent directory "C:/msys/1.0/mingw/mingw32/3.4.5/../../.. /../include" ignoring nonexistent directory "C:/msys/1.0/mingw/mingw32/3.4.5/include" ignoring nonexistent directory "C:/msys/1.0/mingw/mingw32/3.4.5/../../.. /../mingw32/include" ignoring nonexistent directory "/mingw/include" ignoring nonexistent directory "/mingw/include" ignoring nonexistent directory "/mingw/lib/gcc/mingw32/3.4.5/include" ignoring nonexistent directory "/mingw/mingw32/include" ignoring nonexistent directory "/mingw/include" #include "..." search starts here: #include <...> search starts here: C:/msys/1.0/mingw/include C:/msys/1.0/mingw/lib/gcc/mingw32/3.4.5/include End of search list. GNU C version 3.4.5 (mingw special) (mingw32) compiled by GNU C version 3.4.5 (mingw special). GGC heuristics: --param ggc-min-expand=64 --param ggc-min-heapsize=65351 myapp.c:1:20: stream.h: No such file or directory C:\msys\1.0フォルダ以下にstream.hというファイルが存在するのは C:\msys\1.0\mingw\include\c++\3.4.5\backward\stream.h だけです。 msys.batでC_INCLUDE_PATHに ;%MINGW_HOME%/include/c++/%GCC_VER%/backward も書くと、そのstream.hを読み込んでくれますが、 C:\msys\1.0\mingw\include\c++\3.4.5\backward\stream.h が C:\msys\1.0\mingw\include\c++\3.4.5\backward\iostream.h をincludeして、 C:\msys\1.0\mingw\include\c++\3.4.5\backward\iostream.h が C:\msys\1.0\mingw\include\c++\3.4.5\backward\iostream をincludeしようとしてそれが無いのでコンパイルエラーになります。 C:\msys\1.0\mingw\include\c++\3.4.5\backwardフォルダには ファイルが36個しかありません。そのうちの35個は*.hです。 これらの36個のファイルはどこのかのフォルダにコピーして使うものでしょうか?
- asuncion
- ベストアンサー率33% (2127/6289)
>このように出ます。 >$ gcc myapp.c >で#include <stdio.h>の行でコンパイルエラーです。 ↑ 「で#include <stdio.h>の行でコンパイルエラーです。」というエラーメッセージが出る、ということですか? なんかちょっと違うような…。 実際に出ているメッセージの正確な文面と、そのメッセージを出す 最小限のソースコードとを載せていただけますか?
補足
ごめんなさい#include <stdio.h>ではありませんでした。 #include <stream.h> int main(){ return 0; } $ gcc myapp.c myapp.c:1:20: stream.h: No such file or directory msys.batに以下のものを書くと、エラーメッセージはもっと大量に増えました。 set C_INCLUDE_PATH=%MINGW_HOME%/include;%MINGW_HOME%/include/c++/%GCC_VER%;%MINGW_HOME%/include/c++/%GCC_VER%/backward;%MINGW_HOME%/lib/gcc/mingw32/%GCC_VER%/include
補足
とりあえず、どんなソースでもコンパイルできるようにしておきたいという気持ちです。 cとc++の違いには詳しくありません。 あのソースで拡張子がcであるのはvoid main()と書くほどおかしなことでしたら、今後はコンパイルエラーになったらcppに切り換えることにしようと思いますので教えてください。 強制的に C++ にする方法をまだ調べているところです。 これも知りたいので教えてください。