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/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
の関数が
ヌルポで落ちることがあるぜえ
2012/08/17(金) 14:31:42.91
つ bugzilla
2012/08/17(金) 15:01:23.80
自力で何とかしたから、そこまでやる気なし
2012/08/17(金) 16:25:58.44
ちょっwww
2012/08/17(金) 17:12:11.88
こうして不具合は残ったままになるのでした。おしまい。
2012/08/17(金) 17:27:52.03
たまに、
引掛け?
みたいなことしてることあるし
2012/08/17(金) 18:30:39.29
ヌルポでコンパイルが止まるだけ
君には見つけられるかって感じだからね
2012/08/18(土) 13:29:25.72
gcc4.7.1+pthreads_win32でスレッドモデルposixでビルドすると、c++のプレコンパイルヘッダのmakeでこけます。
operator<でエラーで、どうやらptw32_handle_tが構造体だから比較できないってことらしい。
どなたか対処法などご存知ではないでしょうか?

2012/08/18(土) 13:35:58.92
クラスにする
2012/08/18(土) 15:02:52.41
おそらく文脈的にoperator<なんていらん所だろう
コンパイラが変な解釈してるだけと思う
2012/08/18(土) 15:43:14.51
そっちかよw
pthreads_win32をやめるのがいいかと。
2012/08/18(土) 20:40:29.10
>>212
無茶言うなよ・・・
2012/08/18(土) 21:22:45.78
ここの3番
ttp://sourceforge.net/mailarchive/message.php?msg_id=26533137
2012/08/18(土) 22:49:01.09
楽しようとして、ハマりましたって、オチにならなきゃいいけどね
2012/08/18(土) 23:08:57.58
>>214
サンクスです。
さっそく、試してみます。
2012/08/30(木) 20:29:33.41
コンバイン1,2,3
状態
ありがと
2012/09/03(月) 03:13:46.95
単独行動できる仕掛けが
2012/09/21(金) 03:07:46.70
4.7.2
220デフォルトの名無しさん
垢版 |
2012/10/11(木) 22:53:24.71
ほしゅあげ
2012/11/09(金) 02:16:10.23
ビルド時に内部エラーが出るとバックトレースしてくれるようになってるな
2012/12/17(月) 08:18:28.87
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;
}
2012/12/17(月) 08:20:09.02
>>222
x+=1 とか x+=2 とかにすればいいよ。
gcc 特有の事情でない話は C スレに行った方がいいよ。
2012/12/18(火) 17:31:31.01
x = x++;
以来の衝撃を受けた気がする
2012/12/19(水) 22:42:12.03
沖林正紀 を超えたかも知れない
226デフォルトの名無しさん
垢版 |
2013/01/13(日) 11:32:27.35
mesてsh3のローカルバージョンなんだが、setjmp.hが無い。
longjmpの代わりになる方法とかないか?
2013/01/13(日) 23:44:34.43
>>226
newlibあたりからもらってくればいいんでないかい
2013/01/13(日) 23:56:49.15
gcc の新しい CPU 向けのポートの話はここでいいの?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。