元スレGCCについて part9
gcc覧 / PC版 /みんなの評価 : ○
51 = :
>>49
http://gcc.gnu.org/gcc-3.4/changes.html#cplusplus
> You must now use the typename and template keywords to disambiguate dependent names, ...
52 = :
さんくす
lengthの定義のところにtypenameを入れたら通りました。
C++って元からそんな仕様だったっけ?
まあ通ったからいいや。
53 = :
そういう仕様です。
54 = :
環境→OS:Fedora11 gccのバージョン:gcc 4.4.0
GEANT4というシュミレーションコードのコンパイルがうまくいかず、困っています。
3ヶ所ほどコンパイル中にエラーが出ていて、2つは潰したのですが…
最後に残った
Compiling G4ScoreLogColorMap.cc ...
src/G4ScoreLogColorMap.cc: In member function 'virtual void G4ScoreLogColorMap::DrawColorChartText(G4int)':
src/G4ScoreLogColorMap.cc:157: error: 'sprintf' is not a member of 'std'
gmake[2]: *** [/home/xxxxxxxxxxxxx/geant4/tmp/Linux-g++/G4detutils/G4ScoreLogColorMap.o] エラー 1
というエラーが取り除けなくて困っています。
読み込んでいるヘッダーがおかしいんだろうなぁとは思うのですが…
ネットで調べて、色々読み込んでみました。
(1) ttp://www.drk7.jp/MT/archives/001498.html
ここを参考に…(ここはatoiが読み込めませんと出ていた。)
#include <cstdlib>
#include <cstring>
(2) ttp://code.google.com/p/pyminuit/issues/detail?id=8
を参考にして…
#include <algorithm>
(3) ttp://simd.jugem.jp/?eid=73
を参考にして、また、c++がcを下位互換でサポートしている事を踏まえて
#include <stdio.h>
これだけ加えてみましたが、同じエラーが続いています。
どのヘッダーに含まれているのか、ご存知の方いらっしゃいましたら、ご教示いただけませんか?
宜しくお願いいたします。
55 = :
<cstdio>
56 = :
>>55
本当にありがとうございます!解決しました!
57 = :
標準のINCLUDE PATHは変えられないのですか?
自分のHOMEにライブラリをインストールしたのですが、コンパイル時には
システムに標準で入っている古いライブラリのヘッダを観に行ってしまって
失敗するようです。
/usr/localを見ないようにはできませんか?
59 = :
普通に見ない
63 = :
ありがとう
ググって解決しました
65 = :
http://www.jp.kernel.org/pub/GNU/gnu/gcc/gcc-4.4.1/
67 = :
夏だなぁ
68 = :
gccがパブリックドメインになるのは50年後です
69 = :
間違えた、著者の死後50年だよね。
70 = :
著作権についてロクに知らない馬鹿だな。
保護期間が50年なのは財産権であって、人格権は含まれない。
パブリックドメインは人格権に相当するものも含めパブリックと解される。
71 = :
人格権は日本では相続不可。保護期間は死後0年まで。
74 = :
> Each enumerated type shall be compatible with char, a signed integer type, or an
> unsigned integer type. The choice of type is implementation-defined,108) but shall be
> capable of representing the values of all the members of the enumeration.
意訳) enum の型は処理系定義だよ、ただしメンバの値はすべて表現できなければならない
なので、メンバに負の値がなければ、処理系によっては unsigned を選ぶかもしれない
unsigned になった場合は e = -1 は e = (unsigned) -1 のことだから、
なんというか、まぁ、仕方ないんじゃないか
76 = :
>>74
マジか…int とコンパチだと思ってたよ。
77 = :
いやでも同一の implementation で揺れるのはどうなの?(w
78 = :
コードとかの問題じゃないけど、わかる人いたら回答おね。
GCC4.4を--prefix=/opt --program-suffix=-4.4のOPTで自己ビルドインスコ。
これでいくとlibstdc++.so.6とlibgcc_s.so.1が/opt/lib64ディレクトリにできるんだけど、
問題はコンパイルしたアプリがこれらを参照しないでUbnuntu9.04のGCC4.3とセット物の/usr/lib配下の
物を参照してる。アプリをコンパイル時にLD_RUN_RATHに/opt/lib64をつけても変わらない。
ちなみに/opt/lib64/libstdc++.so.6は/opt/lib64/libstdc++.so.6.0.12へ、/usr/lib/libstdc++.so.6は
/usr/lib/libstdc++.so.6.10へのリンクだからバージョン違ってる・・
/etc/ld.so.confに/opt/lib64を追記すると両方共それを参照するけど、そうなるとシステム全部のアプリが
(Ubuntuのgcc4.3でコンパイルされてる)全部gcc4.4のを読んでしまう(lddコマンドの結果)。
そうなるとよくないですよね。なのでやめました。
実行アプリ毎にLD_LIBRARY_PATHをつける管理が面倒なのでGCC4.4でコンパイルしたアプリも現状の
GCC4.3のlibstdc++とlibgcc_sを読ませておく状態で使用して何か後々問題出る可能性ありますか?
79 = :
>>73
アセンブリコード出力して比較してみろよ
80 = :
>>78
リンク時に
-Wl,-rpath,/opt/lib64
とかいう話かね?
81 = :
>>78
LD_RUN_RATH→LD_RUN_PATH
82 = :
>>77
揺れていいみたいだね。
99)An implementation may delay the choice of which integer
type until all enumeration constants have been seen.
83 = :
>>80
お、や。もしかしてそれをコンパイル時にコンパイラフラグで渡せばいいのでしょうか。
やってみます^^
>>81
すまそ、タイプミスです。
84 = :
>>78
> /etc/ld.so.confに/opt/lib64を追記すると両方共それを参照するけど、そうなるとシステム全部のアプリが
> (Ubuntuのgcc4.3でコンパイルされてる)全部gcc4.4のを読んでしまう(lddコマンドの結果)。
それほんと?埋め込まれたバージョン番号が違うから、そのへん良きに計らってくれると思ったんだけど。
85 = :
>>78
そういうもんだ。Ubuntuのg++-4.2も4.3のlibstdc++使ってるし、PPAにある
g++-4.4を入れるとlibstdc++も4.4にアップグレードされる。
87 = :
-fopenmpだっけ?
あれをつけるのとつけないとで違いってでる?
90 = :
は?
91 = :
ひ?
92 = :
ふぅ…
94 = :
うほっ
97 = :
できる
99 = :
>>97
ありがとうございます。やってみたら出来ました。
みんなの評価 : ○
類似してるかもしれないスレッド
- GCCについて part8 (763) - [95%] - 2009/3/11 8:47 ☆
- GCCについて part10 (538) - [90%] - 2018/7/5 20:30
- 【激遅】AppleGCC【絶望】 (111) - [18446744073709551607%] - 2010/1/15 10:31
トップメニューへ / →のくす牧場書庫について