GCCについて part10
■ このスレッドは過去ログ倉庫に格納されています
gccをビルドすると/usr/lib/に妙なperlかpythonのスクリプト(忘れた))が生成されるけど、あれ何するためのものなの? GCC4.7でIntelコンパイラーのように__Cilk命令がマージされたような話を聞いたけど、これ本当にマージされてるの? どうやったら動くの?何か特殊なビルドオプション等が必要? system関数を使ってmpg123を呼び出し、 mp3ファイルを再生しようとしています。 そして、再生の途中で再生を終了させるにはどんな方法があるでしょうか? 端末からコマンドラインで直接打つ場合はctrl+cで止められますが、 ctrl+cと同じことをgccでやろうとしたらどうすればいいのでしょうか? 環境はlinuxです。 systemはやめてfork-execでpidを得た後killすればいい >>196 popenとmpg123 -Rでやれば kill `ps | grep mpg123 | awk '{print $1;}'` ってやるシェルスクリプトをsystemすればいいんじゃね? os xをマラにしたらgccが消えてしまいました。 どこへ行かれたのでしょうか? >>200 XcodeのメニューPreferencesからDownloadsタブのComponentsにあるCommand Line Toolsをインストールしれ gcc/config/i386/i386.cの distance_non_agu_define_in_bb の関数が ヌルポで落ちることがあるぜえ こうして不具合は残ったままになるのでした。おしまい。 ヌルポでコンパイルが止まるだけ 君には見つけられるかって感じだからね gcc4.7.1+pthreads_win32でスレッドモデルposixでビルドすると、c++のプレコンパイルヘッダのmakeでこけます。 operator<でエラーで、どうやらptw32_handle_tが構造体だから比較できないってことらしい。 どなたか対処法などご存知ではないでしょうか? おそらく文脈的にoperator<なんていらん所だろう コンパイラが変な解釈してるだけと思う そっちかよw pthreads_win32をやめるのがいいかと。 ここの3番 ttp://sourceforge.net/mailarchive/message.php?msg_id=26533137 楽しようとして、ハマりましたって、オチにならなきゃいいけどね >>214 サンクスです。 さっそく、試してみます。 ビルド時に内部エラーが出るとバックトレースしてくれるようになってるな forの中のx++をx+1とかx+2にすると無限ループになってしまいます。 x++以外にしたいときはどう書くのでしょうか? linuxで4.4.5です(円記号は実際にはバックスラッシュです) #include <stdio.h> int main() { int x; for(x=0; x<10; x++) { printf("%d\n",x); } return 0; } >>222 x+=1 とか x+=2 とかにすればいいよ。 gcc 特有の事情でない話は C スレに行った方がいいよ。 mesてsh3のローカルバージョンなんだが、setjmp.hが無い。 longjmpの代わりになる方法とかないか? >>226 newlibあたりからもらってくればいいんでないかい gcc の新しい CPU 向けのポートの話はここでいいの? >227 なるほど。 とはいったものの、どうしたらいいのやら。 newlibのソースって当然ASMだろうな。mesのGCCですんなりコンパイルできる だろうか? >>229 あれはふつーのsh-coffだろう 何も考えずにプロジェクトに入れちまえ 何を悩むことがあるのか分からん。 とりあえずnewlibをコンパイルしてみればいいじゃないか。SH4ということにして。 newlib/libc/machine/sh/setjmp.S GDBについて聞きたいんだが、ファイルポインタなどで外部ファイルからパラメータを読み込むプログラムなんだけど デバックする場合、エラーは起きる?それともこれがエラーの原因なんかな うーん、ダメやなGDBうまくわかってないから伝えられないな すまんな ニシくんテクとして壊れたパーツもあえて保持するというテクがあるんやで プログラム的におかしいってことなんかな コンパイル時にエラーは言われないんだけど、実行結果でエラー言われるんだよね もう一度確認してみますわ scanfの使い方がおかしいだけでしょ &のつけ忘れとか エスパーすげえな SetFilePointerとデバッガで挙動が変わるのと何の関係が?としか思えなかったわ 書き方がおかしな所はコンパイル時にわかるけど 実行時の問題まで探してくれてるわけじゃないからね エスパーな質問なのに答えてくれてほんとありがとう scanf確認したんですが&は一応ついてました もう少し色々お聞きしたいのですが、C言語の話題になってしまいそうなのでC言語スレで聞いて見ようと思います GDB自体は実際の実行と同じように動作すると分かって良かったでうs GCCVer3の最終版使うのとGCC最新版(Ver4)使うのではどっちが安定なんだろうか 対応したarchなら、コンパイルという動作はどっちも安定してるんじゃね コンパイラ単体で見れば歴史の長い3の方が枯れていると言えるかもしれないけど、 そう単純なものでもないんだよね。 C++ABI がちょっと違ったりするので、今更3を使うのは問題の種になると思う。 と言うわけで私としては4を推す。 short-enum な --taret=arm* な 4.6.4 で, short-enam な --hist=arm* な 4.6.4 を作ろうとすると 色々まずいっぽいんだが, 既知の事実ですか? コンパイル時にしてするものでビルド時に指定するもんじゃないような >>251 やっぱそうなるか じゃあ libgcc だけ, 単独に short-enum にできる安直な方法ってある? 4.7だと libgcc/config/arm/t-linux に仕込めばいいような もしくは make CFLAGS_FOR_TARGET="-g -O2 -fomit-frame-pointer" CXXFLAGS_FOR_TARGET="-g -O2 -fomit-frame-pointer" な感じか? たのもう gcc 4.7.2 のコンパイルでつまづいてる (gmp 5.1.1、mpfr 3.1.1、mpc 1.0.1 はコンパイルできた) ../configure --enable-languages=c,c++ --enable-bootstrap --enable-shared --enable-threads=posix \ --enable-checking=release --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object \ --disable-dssi --disable-multilib --with-gmp-lib=/usr/local/lib64 --with-mpfr-lib=/usr/local/lib64 \ --with-mpc-lib=/usr/local/lib64 --without-ppl --with-tune=generic の後の make 実行したら mkdir -p -- x86_64-unknown-linux-gnu/libgcc のあるフェーズで、 checking for suffix of object files... configure: error: in `/w/gcc/gcc-4.7.2/build/x86_64-unknown-linux-gnu/libgcc': configure: error: cannot compute suffix of object files: cannot compile See `config.log' for more details. とか言われた x86_64-unknown-linux-gnu/libgcc/config.log には configure:3344: /w/gcc/gcc-4.7.2/build/./gcc/xgcc -B/w/gcc/gcc-4.7.2/build/./gcc/ -B/usr/local/x86_64-unkn own-linux-gnu/bin/ -B/usr/local/x86_64-unknown-linux-gnu/lib/ -isystem /usr/local/x86_64-unknown-linux-gn u/include -isystem /usr/local/x86_64-unknown-linux-gnu/sys-include -V >&5 xgcc: error: unrecognized command line option '-V' とか出てるんだけど、何が悪いかわかる人いたら教えてくらさい ただし英語のドキュメントは読めない ちなみに OS は CentOS 5.3 x86_64 でございますれば 他に補足の情報が必要であれば指摘ください command line option とみなされてるのが問題なんだろ shell 変えてみるとか うーん、sh、csh、ksh、bash を試しましたが変化ありませんなあ・・・orz >>255 同じような症状で --disable-libquadmath つけたら通った 'unrecognized' command line optionでxgccのエラーだぜ、ってことで>>257 はおかしい xgccってのはまさにいま作ってる最中のgccで、そいつが-Vを受け付けてない(手元のgccで試したら確かに4.7系は-Vを受け付けない) -Vの出力から'compute suffix of object files'をしようとしてるんだから>>259 もおかしい エラーはlibgccのconfigureで起きてるっぽいので>>260 もどうかなあ つーことで、configureのその行の前後にxgcc -B中略 -Vの結果を加工して suffix of object files(たぶん.o)をどっかの変数に入れてるところがあるはずなんで その辺書き換えて直接.oをセットしてしまえばいいと思う 環境差かなんかで普通入り込まない過去のgcc互換かなんかの分岐に入ってしまってるんだろう と予想、外れてたらごめん たぶん、glibc-develあたりのパッケージが入ってないような # yum groupinstall "Development Tools" をやれば、いいような >>262 漏れも最初にそう思ったんだけど、 わざとボケてみたんだ。 ごめん。 すいません、これでできました su mkdir /w; mkdir /w/gcc; cd /w/gcc wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.7.2/gcc-4.7.2.tar.bz2 wget ftp://ftp.gmplib.org/pub/gmp/gmp-5.1.1.tar.bz2 wget http://www.mpfr.org/mpfr-current/mpfr-3.1.2.tar.bz2 wget http://core.ring.gr.jp/pub/GNU/mpc/mpc-1.0.1.tar.gz tar xvfj gcc-4.7.2.tar.bz2 tar xvfj gmp-5.1.1.tar.bz2 tar xvfj mpfr-3.1.2.tar.bz2 tar xvfz mpc-1.0.1.tar.gz mkdir gcc-4.7.2/build mkdir gmp-5.1.1/build mkdir mpfr-3.1.2/build mkdir mpc-1.0.1/build cd gmp-5.1.1/build ../configure --enable-cxx make #make install cd ../../mpfr-3.1.2/build ../configure make #make install cd ../../mpc-1.0.1/build ../configure make #make install cd ../../gcc-4.7.2/build ../configure --enable-languages=c,c++ --enable-cxx --with-newlib --disable-multilib --enable-threads=posix --with-tune=amdfam10 export LD_LIBRARY_PATH=/usr/local/lib64 make #make install あ、↑の #make install は make install でございますれば で、 ../configure --enable-languages=java --with-newlib --disable-multilib --enable-threads=posix --disable-bootstrap とするとコケて、どうしても Java コンパイラが作れないです libtool: compile: /w/gcc/gcc-4.7.2/build_java/./gcc/xgcc -shared-libgcc ---snip--- java/net/.deps/natVMInetAddress.Tpo -c java/net/natVMInetAddress.cc -fPIC -DPIC -o java/net/.libs/natVMInetAddress.o java/net/natVMInetAddress.cc:42:52: error: declaration of C function ‘int gethostname(char*, int)’ conflicts with In file included from java/net/natVMInetAddress.cc:12:0: /usr/include/unistd.h:845:12: error: previous declaration ‘int gethostname(char*, size_t)’ here make[3]: *** [java/net/natVMInetAddress.lo] Error 1 Web 検索しても、なぜかコケて回避できないみたいな記述があったような無かったような あー、 ../configure --enable-languages=java --disable-multilib --disable-bootstrap にしたらコンパイルできますた が、実際に .java ファイルをコンパイルしようとすると gcc: error trying to exec 'ecj1': execvp: No such file or directory とか怒られる ググったらこんな感じ http://barutan.s296.xrea.com/cgi-bin/tdiary/?date=20100220#p04 お手上げでしょか? GCJ使うのが目標だったのね。 ディストリビューションのspecファイル参考にするといいんじゃないかな。 gcc 4.8.0をmakeしようとしたらこんなの出ました。 この前にmakeをビルドしたのですが、makeのビルドに失敗したって意味でしょうか? http://www.07ch.net/up2/src/lena8828.png makeで始める行はmakeコマンドが出力してる。[n]はネストの深さ。 エラーが起きているのはシェルにコマンド行で渡して実行させているコード。 EOFが出てるのは、Win32上で有名な > [Please ignore a syntax error on the next line - it is intentional] じゃないんだな。この部分は出てないので。 http://www.07ch.net/up2/src/lena8830.png すみません。今見たらbuild/libiberty/config.logにNo such file or directoryと書いてありました。 ぐぐってみます。 ありがとうございました。 しつこくてすみません MinGWにpthreadsをインストールしてgcc 4.8.0をコンパイルしようとしたのですが、sys/systemcfg.hが無いといわれて ググったのですが、見当たらないのでwinpthreadsをコンパイルしようとしたのですが、makeでエラーになります。 http://www.07ch.net/up2/src/lena8836.png configureもmakeも改変せずにビルドしているのですが、makeが存在していないファイルを作ろうとしていてmakefileに問題があるのでしょうか? GCC 4.8.0 released [2013-03-22] しつこくてすみません make[1]: *** `src/libwinpthread_la-barrier.lo' に必要なターゲット `src/.dirstamp' を make するルールがありません. 中止. make: *** [all] エラー 2 となるんですがmakefileの該当部分は libdummy.la: $(libdummy_la_OBJECTS) $(libdummy_la_DEPENDENCIES) $(LINK) $(libdummy_la_OBJECTS) $(libdummy_la_LIBADD) $(LIBS) src/$(am__dirstamp): @$(MKDIR_P) src @: > src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/$(DEPDIR) @: > src/$(DEPDIR)/$(am__dirstamp) src/libwinpthread_la-barrier.lo: src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) これでは.dirstampは作れていないのでしょうか? くっつけるerr.logを間違えました上の部分のエラーログは process_begin: CreateProcess(NULL, /bin/mkdir -p src, ...) failed. make (e=2): 指定されたファイルが見つかりません。 make[1]: *** [src/.dirstamp] エラー 2 make: *** [all] エラー 2 こちらです cd src touch .dirstamp cd .deps touch .dirstamp したらmakeできました お騒がせしました 4.8で動かなくなる奴たくさんありそうだな 普通の実行順序で考えると動きそうだし たまたまローカル変数ですべて収まってたから、 過度に最適化されたのかな? SPECのコードが壊れた話? C言語は高級アセンブラで、思った通りの機械語コードを吐いてくれる、 なんてのが昔話だと、いい加減みんな認識すべきなんだな。 現代のC言語は、最適化オプション付けていて、未定義を踏んでたら 悪魔と契約してでも最適化を掛けてくるもんだ、と思うべき。 >>284 このスレでこの程度のジャーゴンもわからないとか。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる