GCCについて part10

■ このスレッドは過去ログ倉庫に格納されています
2011/09/03(土) 14:13:04.14
史上最強かもしれなかったツール、GCC(GNU Compiler Collection)について語るスレ。

GNU本家のGCCページ
http://gcc.gnu.org/

Binutils - Collection of binary utilities ←これも必要だぞ。
http://www.gnu.org/directory/GNU/binutils.html

GNU Binutils
http://sources.redhat.com/binutils/

GCC online documentation
http://gcc.gnu.org/onlinedocs/

Installing GCC
http://gcc.gnu.org/install/

GCC Timeline
http://gcc.gnu.org/releases.html#timeline

Calendar
http://gcc.gnu.org/develop.html#timeline

前スレ
GCCについて part9
http://hibari.2ch.net/test/read.cgi/tech/1246059290/

関連スレ
【最速へ】LowLevelVirtualMachine【LLVM】
http://hibari.2ch.net/test/read.cgi/tech/1211547655/
2012/01/14(土) 17:37:33.78
他のアーキテクチャはmdいじくって、回避してるよ
どっちを修正すればいいかって話になるけど
function.cの該当部分書いたのがイマイチだって感じかな?
2012/01/14(土) 17:46:01.66
archによってはわざとmakeでコケるような細工してあることが注意したほうがいいよ
2012/01/14(土) 18:23:50.79
make の段階でこけるならまだ良心的だなw
10696
垢版 |
2012/01/22(日) 23:41:41.30
遅くなりましてすみませんが
ご回答いただいた方ありがとうございました
2012/01/27(金) 16:04:12.55
これからは礼の言葉はいらん
2012/02/28(火) 18:10:21.39
対レジスタに関して演算結果で変化がないときは最適化してくれるけど
対メモリに対しては最適化されない時があるんだね、gcc
2012/02/28(火) 18:41:02.39
頑張っても同じって場合なんじゃない?
2012/02/28(火) 18:46:57.74
レジスタ使い回しが出来る奴はあんまり影響がないけど
メモリに依存したような奴は無駄なコードを吐いちゃうってことがある?ってことです
2012/02/28(火) 19:14:32.98
最適化レベル6にしてるか?
2012/02/28(火) 19:28:33.24
aliasある疑いがある時はちゃんとメモリアクセスしないと仕方ねえしな。
2012/02/28(火) 20:01:52.41
最適化レベル6ってどこのコンパイラのこと?
114デフォルトの名無しさん
垢版 |
2012/02/28(火) 20:25:22.47
THINK Cだろ
2012/02/28(火) 22:09:56.74
Linux 0.99とかその辺の話じゃないの?
2012/02/28(火) 22:19:55.95
ワシの最適化は108まであるぞ
2012/02/28(火) 22:53:59.19
内部的には3まででしょ、gcc
-Oのあとの数字はなんでもうけつけるってだけで

最適化レベルっていっても細かなオプションが適時追加されるだけという
2012/02/29(水) 09:17:44.33
やたらでかい数字に意味があったのってEGCS時代ぐらいじゃね?
119デフォルトの名無しさん
垢版 |
2012/02/29(水) 17:21:18.80
ぐらいだね
2012/03/03(土) 12:56:03.52
4.7.0
2012/03/08(木) 01:15:56.76
gcc4.7を使ってみたくて自前ビルドで詰まったんだけど,質問はここでいいのだろうか.
場所が悪ければ誘導願いたい

Ubuntu 11.10で,gcc-4.7.0-RC-20120302をビルドしようとしてる.

標準エラーの最後の方がこんなのだったんでリンクができてなくて止まってるのはわかるんだけど
glibcやらbinutilsあたり,aptにあるそれらしいやつは違うようだった
入れるべきパッケージなりが足りてない?
それともlocateで出てくる奴にシンボリックリンクでも貼ればいいものだろうか

↓エラーログ
/usr/local/bin/ld: cannot find crti.o: No such file or directory
/usr/local/bin/ld: cannot find -lc
/usr/local/bin/ld: cannot find crtn.o: No such file or directory
collect2: error: ld returned 1 exit status


解決法探すコツみたいなものも教えていただけるとありがたい
ログが膨大で何に重点をおくべきかわからなくなってる
2012/03/08(木) 01:31:56.68
glibcのdevelみたいなのが入ってないような感じ、debian系はよー知らんけど
今のgccはビルドするときに必要なパッケージが増えてるから、ご注意を

ttp://packages.ubuntu.com/oneiric/gcc
2012/03/08(木) 07:45:36.03
>>121
Ubuntuにもmultiarch問題があるのか。
2012/03/08(木) 08:35:59.30
自分で答え書いてるやん
2012/03/08(木) 10:05:25.71
リナックスは問題だらけで使い物にならんよ。
リナックスがパッケージシステムが出来て糞になってる間に
windowsは安定してみんな使うようになった。
2012/03/08(木) 10:54:37.12
>>125 のようなバカが使ってるよな
2012/03/08(木) 10:59:19.59
メーカーがドライバーを作らないからな。
偽者のドライバーでは機能制限が多すぎて
最高のパフォーマンスを出すことは到底不可能だからな。
2012/03/08(木) 11:05:01.38
釣りにしてはネタが腐ってるような?
2012/03/08(木) 11:23:08.62
寿司じゃないんだから・・・・
それを言うならエサでしょう。あいにっく
釣りっぽい発言には見えないが・・・
130121
垢版 |
2012/03/08(木) 14:24:03.17
パッケージのgcc4.6は入ってるから,glibc系の依存してるパッケージは入ってるはず.

/usr/libとかに勝手に作っちゃうと先々何か入れるときに衝突しそうで避けてたんだけど
/usr/libにあるはずのものが/usr/lib/i386-linux-gnuに入っちゃってるって記事を見て
シンボリックリンク貼って走らせておいたら通ってたよ
現在make check中.

ものすごく無理やりな感があって正しいのか不安だけど,とりあえず回答に感謝
2012/03/09(金) 01:27:12.80
multiarch問題は--libdir=/usr/lib/i386-linux-gnuで解決するんじゃないのか?
2012/03/09(金) 01:46:40.72
あ,まさにそれっぽい
これか.
--libdir=dirname
Specify the installation directory for object code libraries and internal data files of GCC. The default is exec-prefix/lib.

勝手に作ったシンボリックリンク外してやってみる
2012/03/09(金) 22:22:39.29
うまくいかないな
configureに--libdir=/usr/lib/i386-linux-gnuやら
--libexecdir=/usr/lib/i386-linux-gnuやらつけて
何回か試してみたけど見に行ってくれてないみたい

ldが探す場所ってld.so.confが読んでる奴じゃなかったっけ.
こっちに/usr/lib/i386-linux-gnuも入ってるのだけど,
ldconfig -pに出てこないから探しに行ってないんだよな
ここが解決すればよさそうな気もするのだけど.
このあたりの話題はスレ違いだろうか
2012/03/09(金) 22:25:33.52
64bitなgcc作りたいの?
なら、32bitな環境入れとかないとコケるような
2012/03/09(金) 22:34:00.66
いや,そも全部32bit環境…のはず.
i386,i686はアーキテクチャの差であってbit数は関係ないよね?
2012/03/09(金) 22:37:31.73
どこでコケてるのか、文章だけじゃ、わからないよ
rpmなら、specファイル見たらって言えるんだけど
2012/03/09(金) 22:56:36.35
あ,出てるエラーは>>121です
ldが/usr/lib/i386-linux-gnu/を見ずに/usr/libまでしか見てないらしくて
crti.oとかが無いと言われる
/usr/libから手動でシンボリックリンクを貼ってみたら一回通ったけど,
そうじゃなくてオプションでそちらを見る方法があるなら知りたい

直前のコマンドは引数多すぎて何をしてるのかよくわからないけど
(ビルドしてるディレクトリ)/gcc/xgcc
のようです
2012/03/09(金) 23:57:50.14
なんかまだ具体性欠いてるきがするので追記.
gcc4.7.0RCのmake中,>>121のエラー
そのあとの出力は以下,直前のコマンドは貼れないくらい長いものでxgccを起動してるらしい
make[3]: *** [libgcc_s.so] エラー 1
make[3]: *** 未完了のジョブを待っています....
make[3]: ディレクトリ `($HOME)/build/gcc-4.7.0-RC-20120302/build/i686-pc-linux-gnu/libgcc' から出ます
make[2]: *** [all-stage1-target-libgcc] エラー 2
make[1]: *** [stage1-bubble] エラー 2
make: *** [all] エラー 2
make[2]: ディレクトリ `($HOME)/build/gcc-4.7.0-RC-20120302/build' から出ます
make[1]: ディレクトリ `($HOME)/build/gcc-4.7.0-RC-20120302/build' から出ます
---ここまで---

自分で判断できることと知りたい内容は>>137の内容.
2012/03/10(土) 00:03:21.81
--disable-bootstapつけてやってみるとか、適当だけど
自分もその辺でハマった口だけど、
build.log見たりとか
コケたところを部分的に手動でやってみたりとか

gccのビルドって、自力でやるのがだんだん難しくなってる、自分的には

4.6あたりで出来るか試してみるのも、ひとつの手
2012/03/10(土) 00:48:37.07
そりゃ、野良のldをmultiarch対応せずに使っているなら見ねーよな
2012/03/10(土) 00:56:54.52
いろんなアーキテクチャに対応するために
/usr/libにあったものを/usr/lib/(アーキテクチャ名)に移動してあるものがあって
ldもmultiarchに対応したものを指定してやらないとならない,ってことか

ldはbinutilsに含まれるってことで合ってる?
binutilsも新しいもの入れたつもりだけど,古いの呼んじゃってるかもしれないから
そのあたり調べてみる
2012/03/10(土) 00:58:53.88
本当にバカだな
意味が分からないなら、ubuntuのbinutilsつかってみろ
それで解決
2012/03/10(土) 01:03:33.54
Debianのgcc-4.7をリビルドして使おうとしないところが、頑なな奴だな。
2012/03/10(土) 01:26:26.28
>>142
Ubuntu,もしかしたらDebianからかもしれんけど
ディストリビューション特有の問題でそれに対応したのがちゃんと用意されてるから
素直にそれを使え,でいいんだろうか
とりあえず自分で入れたbinutils削除してld -vでfor Ubuntuの文字を確認してから
もう一度make中

>>143
Linux使い始めてそう経ってないから,常識をわかってないところは多々あると思うんで
そういうところこそ聞きたかった
4.7使いたいだけならgnuの素のソースだけじゃなくて,
Debianから試験的パッケージ出てたんだね
だめならこっち試してみる
2012/03/11(日) 00:02:07.11
--- a/src/gcc/config/i386/t-linux
+++ b/src/gcc/config/i386/t-linux
@@ -3,3 +3,5 @@
# t-slibgcc-elf-ver and t-linux
SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver \
$(srcdir)/config/i386/libgcc-glibc.ver
+
+MULTIARCH_DIRNAME = i386-linux-gnu
2012/03/22(木) 23:22:47.12
GCC 4.7.0 released [2012-03-22]
2012/03/25(日) 01:22:03.60
__transaction_atomic の使い方がわからん
中に出てくる変数全部アトムボーイになるの?
148デフォルトの名無しさん
垢版 |
2012/03/25(日) 01:32:10.51
超高速にシンタックスチェックだけしてくれるモードとか無い?
2012/03/25(日) 01:40:49.49
lint 使えよ。
2012/03/25(日) 11:27:59.90
>>148 -fsyntax-only
2012/03/25(日) 21:53:44.63
何の処理もせず、時間稼ぎをしたいとき、どのような方法がありますか?
例えば、キー入力を受け付けてから、5秒あけて、入力された内容を表示するという場合です
2012/03/25(日) 21:54:50.20
sleep(5);
2012/03/25(日) 22:58:58.43
>>147
gcc/testsuite/c-c++-common/tm/trxn-expr-2.c
2012/03/25(日) 23:48:00.43
>>153
__transaction_atomic (a+b+c);
これがどう働くのかを聞いてるんだよ・・・
2012/03/26(月) 00:25:25.52
>>154
噛み付かれても、俺もわからんのだけど
gcc gcc/testsuite/c-c++-common/tm/trxn-expr-2.c -S -fgnu-tm -O2
でもやって、自力で答え見つけたら
なんとなく、ポインターアクセス経由でやってるだけな感じだけど
(思ってる答えとは違うかもね)
2012/03/26(月) 17:18:46.67
gcc (GCC) 4.8.0 20120316 (experimental)
157デフォルトの名無しさん
垢版 |
2012/03/27(火) 15:41:50.42
macportで入れたgcc46で
gcc-mp-4.6 -march=corei7 -E -v - </dev/null 2>&1 | grep cc1
としても、>.75のようではなく
-fPIC -mmacosx-version-min=10.6.8 -march=corei7 -m64
としかででないのですけど、march=corei7の効果はないということでしょうか?
corei7をcorei7-avxやcore2にしてもどうようです。nativeにしたときだけ>>75のようにでてきます。

2012/03/27(火) 18:00:44.76
だって明示的にCPU指定したら命令セットは自明だろ
キャッシュサイズは個々に違うから指定されないわけで
2012/03/27(火) 19:31:02.63
そうか。d
ということは、corei7でmarch=nativeやmarch=corei7を使うと、
mfpmath=sseを使う意味はないという理解で大丈夫ですか?
2012/03/28(水) 13:32:02.99
>>159
定義済みマクロがあるやつは
cpp -march=core2 -dM < /dev/null | grep SSE
とかで分かるな

2012/03/28(水) 18:27:01.41
混乱中
manを読むと、-mavxは MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,SSE4.2 and AVXをサポートしているから
配布目的でなければ、-mmmxや-msseなどは付ける必要ないんだろうか?

>>75を見ると、-march=nativeをしたときには-mavxが自動的につくけど、
march=corei7-avxでは-mavxは自分で付けなければいけないということなのか?

うむむむ


2012/03/28(水) 22:26:55.80
>>161
avxが有効だと__AVX__が1に定義されるから>>160でそれを調べたら分かるのでは
2012/03/28(水) 22:33:05.99
>>161
-marchや-mtuneは-msseや-mavxみたいなオプションのセットという認識だけどな
nativeの場合はプロセッサのフラグを呼んで有効になっている機能を使おうとするから
msseみたいな物が個別につくのでは
例えばKVMとかで仮想CPUの場合に、物理CPUにある機能が一部無効になってると個別のオプションが変わったりする
2012/03/28(水) 23:01:18.78
ぶっちゃけアセンブリ出力を見たらどうか
2012/03/28(水) 23:51:52.73
{"corei7-avx", PROCESSOR_COREI7_64, CPU_COREI7,
PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
| PTA_SSSE3 | PTA_SSE4_1 | PTA_SSE4_2 | PTA_AVX
| PTA_CX16 | PTA_POPCNT | PTA_AES | PTA_PCLMUL},

if (processor_alias_table[i].flags & PTA_AVX
&& !(ix86_isa_flags_explicit & OPTION_MASK_ISA_AVX))
ix86_isa_flags |= OPTION_MASK_ISA_AVX;
2012/03/29(木) 12:06:21.03
SSEにしろAVXにしろ、OSが明示的に許可してないと使えないんだから
勝手に生成されたらまずいんでね
2012/03/29(木) 12:20:20.92
自分で指定しておいて勝手にとは如何に
2012/04/09(月) 10:04:51.69
gcc -Q --help=target -march=corei7-avx
でわかるね
2012/04/09(月) 15:45:06.79
現在時刻を端末上で、

○時○分○秒

と表示させるにはどのような関数があるでしょうか?
環境はlinuxです。
2012/04/09(月) 16:25:22.33
info gcc

そんな機能あるのか?
2012/04/09(月) 16:38:51.56
>>169
このへんから
ttp://linuxjm.sourceforge.jp/html/LDP_man-pages/man2/settimeofday.2.html
2012/04/09(月) 17:14:32.47
>>170
若干ずれるがcppに頑張っていただけば

#include <stdio.h>
int main(void)
{
 puts(__TIME__);
}
2012/04/09(月) 17:53:35.07
>>172
なるほど、それをcppの代わりにインストールすればいいのか。
2012/04/09(月) 23:31:19.31
>>171
もうこんなの使うのやめなよ・・・
2012/04/09(月) 23:35:48.24
>>174
最近の事情はよー知らんので教えて欲しいな、どこ見りゃいいの?
2012/04/09(月) 23:50:52.52
>>175
下の方だよ
2012/04/09(月) 23:52:15.40
>>175
POSIX.1-2008 marks gettimeofday() as obsolete, recommending the use of clock_gettime(2) instead.

って書いてある。
2012/04/09(月) 23:54:59.95
>>177
ありがと
2012/04/10(火) 09:02:00.63
clock_gettimeは致命的な遅さ
2012/04/11(水) 00:27:36.86
>>179
じゃあどうすりゃいいんだよ!
2012/04/11(水) 00:50:43.92
どうやって測ったのか知らんけど
遅いっていうのなら、glibcのソース見て、自前で実装するしかないでしょ
2012/04/11(水) 07:08:36.38
get_wild関数で変数名がxyzです。
何が起こるでしょうか?
2012/04/11(水) 07:31:21.19
>>181
つまりclock_gettimeは使わないという結論か
2012/04/11(水) 14:43:38.38
>>183
time関係は遅いのかもしれんけど、今時の実行環境ならさほど問題になるようなことはない気がするけど
何をするかによっても関数の実行時間が問題になるかは変わってくるからね
2012/04/12(木) 01:36:44.09
>>182
アスファルトにタイヤを切りつける
2012/04/12(木) 12:34:06.48
>>182
プログラム「都市狩り」起動
2012/04/12(木) 12:35:16.88
>>182
プログラム「都市狩り」起動
2012/04/12(木) 22:37:53.88
>>182
恋人が交通事故死します。
2012/04/15(日) 18:17:28.30
冴羽遼は関係無いだろ
2012/04/15(日) 20:46:36.79
じゃあ何ならいいんだ
2012/05/03(木) 11:29:23.10
gccをビルドすると/usr/lib/に妙なperlかpythonのスクリプト(忘れた))が生成されるけど、あれ何するためのものなの?
192age
垢版 |
2012/05/03(木) 11:31:53.03
GCC4.7でIntelコンパイラーのように__Cilk命令がマージされたような話を聞いたけど、これ本当にマージされてるの?
どうやったら動くの?何か特殊なビルドオプション等が必要?
2012/05/04(金) 00:57:31.93
?-gdb.py
消しても問題みたいだけど
2012/05/04(金) 01:00:40.04
逝ってるなコンパイラは逝ってるなことやってるんだ
2012/06/15(金) 15:53:57.15
4.7.1
2012/07/04(水) 18:10:06.71
system関数を使ってmpg123を呼び出し、
mp3ファイルを再生しようとしています。
そして、再生の途中で再生を終了させるにはどんな方法があるでしょうか?
端末からコマンドラインで直接打つ場合はctrl+cで止められますが、
ctrl+cと同じことをgccでやろうとしたらどうすればいいのでしょうか?
環境はlinuxです。
2012/07/04(水) 18:37:19.91
systemはやめてfork-execでpidを得た後killすればいい
2012/07/05(木) 12:04:38.02
>>196
popenとmpg123 -Rでやれば
2012/07/24(火) 01:02:18.16
kill `ps | grep mpg123 | awk '{print $1;}'`
ってやるシェルスクリプトをsystemすればいいんじゃね?
200デフォルトの名無しさん
垢版 |
2012/07/27(金) 08:18:19.48
os xをマラにしたらgccが消えてしまいました。
どこへ行かれたのでしょうか?
2012/07/27(金) 09:17:44.29
>>200
XcodeのメニューPreferencesからDownloadsタブのComponentsにあるCommand Line Toolsをインストールしれ
2012/08/17(金) 02:08:45.92
gcc/config/i386/i386.cの
distance_non_agu_define_in_bb
の関数が
ヌルポで落ちることがあるぜえ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況