元スレGCCについて part9
gcc覧 / PC版 /みんなの評価 : ○
102 = :
使ってるレンタル鯖が C/C++ で書いた CGI を使えるって書いてあるんだけど、
シェルは解放してないからクロスコンパイル環境を作って対応したことはある。
(鯖は無料だからその程度の手間は仕方ないんだが。)
最近の GCC ならそんなに難しいことではない。
でも、ライブラリ類はコンパイル済みのをどこかからもってきた方がいいぞ。
103 = :
g++ には VC のプリコンパイル済ヘッダみたいな機能はないんですかいの?
boost 使ったソースをコンパイルしようとしたら遅すぎてやっとれんです。
105 = :
あ、ごめん、boostは知らんです…
ccacheで我慢するくらいしか思いつきません
106 = :
おお、あるのね。どもっす。
とりあえずあとはぐぐってみます。
107 = :
すみません質問なのですが,最近vc++からgccに乗り換えたのですが
vc++にある
wmain( int argc, wchar_t *argv[ ])
みたいに引数をwchar_tにすることはできるでしょうか?
109 = :
ありがとうございます,それでやってみます.
110 = :
質問です。
コンパイルオプションとして-Werrorをつけたいのですが、
実装上どうしても、取り除くことができない警告があります。
この警告だけはWerrorの対象からはずすということができますでしょうか?
もしできるならその方法を教えてください。
111 = :
gccのソースをいじる
112 = :
>>110
外したい警告がどういう警告なのか書けよ。
114 = :
>>111-113
返答ありがとうございます。
Werrorの非対象にしたいのは-Wをつけた際に出力される、longjmp関連の警告です。
-Wは複数の機能を持つオプションなので、-W自体を無効化はできない状況です。
115 = :
http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
にある通り、-Wは-Wextraの別名で、含まれる警告オプションのうち
longjmpが関連しそうなのは-Wclobberedと-Wuninitializedだから、
-Wno-clobbered -Wno-uninitializedをつけてみたらどうか
117 = :
>>115-116
ありがとうございます!
今は試せる環境がないので明日挑戦してみます。
118 = :
-fltoが入る前に-combine試してみたけど、
4.4だと引数が多すぎって言われてコンパイル出来ない事があるな
4.5になると引数の最大値が大きくなったりするんだろうか…
というかしてくれないと困る。
-combine -fwhole-program -ftoでビルドしたいんじゃー
120 = :
>>118
> 4.4だと引数が多すぎって言われてコンパイル出来ない事があるな
これってどういうメッセージ?
122 = :
>>120
cc1: error: too many filenames given. Type cc1 --help for usage
124 = :
HelloWorldを、gcc・g++を使用してWinXP・Ubuntuでコンパイルしてみた。
----------------------------
#include <stdio.h>
int main(int argc, char** argv) {
printf("HelloWorld!");
return (0);
}
-----------------------------
WinXPは正常に実行できたけど、Ubuntuのgccがうまくいかない。
/tmp/ccaeafnN.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld はステータス 1 で終了しました
バージョンは4.3.3。
上記のようにリンクでエラーがでる。
コンパイラはもともと入ってたやつだから、導入に失敗したわけではなさそうだけど。
オプションも出力先以外は指定してないし。
原因が分かるエスパーな方はいませんか?
126 = :
>>124
g++標準のライブラリがリンクされてないように見える。
g++ hello.cc ではなく gcc hello.cc でコンパイルしてない?
127 = :
この手の「普通にやったらエラーが出るはずが無い」のに
gccを使っていてリンクエラーが出る場合、大抵は>>126だよな。
普通にg++とするか、あるいは-lstdc++とかでもなんとかなるもんだけど
意外にそこでひっかかる人も多いよね。
まあ>>124の原因は知らないけど。
128 = :
拡張子を.cにしたらいけました。
ありがとう。
それにしてもアホすぎる……。
TDM/Mingwだと「gcc hello.cpp」は通るけど「g++ hello.cpp」がリンクエラー。
\(^o^)/
130 = :
gccの#defineマクロの記述で
通常の関数のreturnに相当する記述ってどうやって書けばいいのでしょうか?
131 = :
それがわからないようならマクロなぞ使うな。あぶなっかしすぎる。
132 = :
>>131
まさか知らないのですか?
バカなんですか?
135 = :
>>128
要するに、GCCでは拡張子で動作が変わるってことか。
137 = :
拡張子で言語は選んでくれるのにライブラリは選んでくれないという気
の利かなさ。
139 = :
だってオブジェクトはどちらも.oで、そこからリンクする時に
必要に成るライブラリがどちらかなんて ld には分からない。
増改築を繰り返した田舎の温泉旅館みたいなc++は捨てて、
ISO C(c99)でええやん。
140 = :
c99のほうが田舎の温泉旅館みたいなんだが……
141 = :
C99って使ってる現場あるのか。
142 = :
全機能ばりばり使ってます、という所は少ないと思うが、
//コメントとか、変数定義の混在とかは割と使ってるんじゃないか?
143 = :
変数は最初に必要になった箇所で宣言するようにしたらかなり見易い。
変数はなるべく使い棄てにしたほうがコンパイラもフロー解析しやすいらしいし。
145 = :
使い捨てと言うか、スコープを狭くすると、フロー解析もやり易いし
レジスタ割り付けも楽。最適化もやりやすく成る。
146 = :
俺の周りではC99という言葉すら通じん…
148 = :
レジスタは一括宣言のほうが楽なんじゃね?
だってベースポインタ一緒なんだぜ?
149 = :
Javaじゃねーんだから汎用レジスタに乗せて使い捨てることもあるだろ
150 = :
いかにメモリアクセスを少なくするかが鍵みたいだよ。
みんなの評価 : ○
類似してるかもしれないスレッド
- 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
トップメニューへ / →のくす牧場書庫について