アカウント名:
パスワード:
gccのソースをコンパイルできるくらいまともなC++コンパイラって数えるほどしかないような
1. まずclangをビルドします。2. gccをビルドする必要がなくなったので終了
BSD界隈なんかに、こういう勘違いしている人が多いけど実際にはclangはLLVMに依存しているし、LLVMはgccに依存しているゆえにgccへの依存は消えない
ほぼ全てのCコンパイラで自身をビルドできるgccのbootstrapの話してるところにLLVMが無ければ自身を作ることさえできないclangを持ち出すとかなにを勘違いしてるんだか・・・・・・・・・・・・
# LLVMが不要なclangか、gccが不要なLLVMができると良いね(棒読み)
これは初耳なんですけどそうなんですか?llvm-gcc の勘違いじゃなくて?
詳細は http://llvm.org/docs/GettingStarted.html [llvm.org] あたりに書いて有りますが,llvm はバイトコードから native code を作るときに GCC を使います.そのためllvmのビルドにもGCCが必要です.
厳密にはGCCじゃなくても,solaris の cc のようなCコンパイラがあればビルドできますが>1. まずclangをビルドします。>2. gccをビルドする必要がなくなったので終了というのはありえない話で,1の時点でCコンパイラがすでに使える状態になっています.
> 1の時点でCコンパイラがすでに使える状態になっています.C++コンパイラが必要になるって話じゃなかったの? solarisのccってC++もサポートしてるの?
#2214378 [srad.jp]の時点でC++コンパイラがどうのという話とは違ってきています。突っ込みを入れるならそちらの方にすべきです。
1. まず(native ccで)clangをビルドしますが可能なら別におかしくないじゃん。1の時点でCコンパイラしか使えない状態で、C++コンパイラを使えるようにするという話になるんだから。# そもそもどうみてもジョークなのにネタにマジレスにもほどがある
clang は C++ で記述されていますので、「C++コンパイラを手に入れるには」の第一歩でclangが出ている時点でおかしいんですよ。clangがビルドできるなら、そこにC++コンパイラが既にあるってことです。ジョークとしても微妙に中途半端なネタ…
そもそも> まず(native ccで)clangをビルドしますが出来ないんですよ.
つまり> # そもそもどうみてもジョークなのにネタにマジレスにもほどがある何も理解してないのにジョークとネタとか言っちゃうあなたが一番笑えます.
>>1. まずclangをビルドします。>>2. gccをビルドする必要がなくなったので終了>というのはありえない話で,1の時点でCコンパイラがすでに使える状態になっています.
C++コンパイラが欲しいのにCコンパイラしかインストールされてない……って環境だと、GCCはビルドできないから、GCCではなくClangをビルドするという選択は普通にあり得るが。何か勘違いしてね?
俺も不思議。llvmはclangでビルドできると思ってたけど……
いろいろと勘違いしているよ
自分は一言も情報を出さないのでツッコまれる心配と無縁な物知りごっこいつもお疲れ様です。
今時LLVMもclangでビルドできるでしょ。もしできないのだとしても、できるようになるのは時間の問題のはず。
#clangはGCC独自拡張も結構対応しているし、ちょっとばかしGCCべったりなコードでもclangでビルドを通すのはそんなに大変ではない可能性が高い。
clangをclang-llvmでコンパイルできます?なんか失敗する。
clangじゃアーキテクチャ間の移植性がまだ弱いからgccの代わりにはならないよ
最新のC++規格(2011)に対応しているC++コンパイラは少ないと思う。GCC4.7が必要ってのがそのためかは知らんけど。
ここでGCC 4.7が登場するのは、たんにC++移行前Cで書かれた最後のバージョンということ以上の意味はないと思います。なので、そこでbootstrapするのは別に4.6でも4.5でもとりあえず完遂できるのではないでしょうか。
http://gcc.gnu.org/codingconventions.html#Portability [gnu.org] によれば、C++03を「使ってもいい」ということらしいので、C++03対応は必須、という事になりますかね。 http://gcc.gnu.org/ml/gcc-patches/2012-08/msg01223.html [gnu.org] あたりからのスレの流れも気になりますが、時期的にはgcc3.4とか3.3でも対応していそうな気がします。
> 「もしうっかり、世界中からgccをコンパイル可能なコンパイラのバイナリを消しちゃったらどうしよう?」みたいなネタが気になります。
たとえで言えば、
鉄鉱石や原油の採掘にはこの重機が必要ですが、この重機を作るには鉄が必要で、動かすには燃料が必要です。もしうっかり、世界中から重機を消しちゃったらどうしよう?
といった感じでしょうか。(鉄鉱石や原油を採掘できてもそれだけで重機や燃料が作れるわけではないですが)。現代文明そのものが、消してしまうとブートストラップはきわめて難しいようです。
鶏と卵の関係とも言えるかも。生命もブートストラップはきわめて難しいようです。
クロスコンパイルでターゲット用のバイナリを最初に作れば良いだけじゃないか?
ターゲット用の環境でコンパイルして動かしたら自動的にターゲット用のバイナリを出力するわけじゃないぜ?
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
普通のやつらの下を行け -- バッドノウハウ専門家
bootstrapはどうなるの? (スコア:0)
gccのソースをコンパイルできるくらいまともなC++コンパイラって数えるほどしかないような
Re:bootstrapはどうなるの? (スコア:5, おもしろおかしい)
1. まずclangをビルドします。
2. gccをビルドする必要がなくなったので終了
Re:bootstrapはどうなるの? (スコア:1)
1. まずclangをビルドします。
2. gccをビルドする必要がなくなったので終了
BSD界隈なんかに、こういう勘違いしている人が多いけど
実際にはclangはLLVMに依存しているし、LLVMはgccに依存している
ゆえにgccへの依存は消えない
ほぼ全てのCコンパイラで自身をビルドできるgccのbootstrapの話してるところに
LLVMが無ければ自身を作ることさえできないclangを持ち出すとか
なにを勘違いしてるんだか・・・・・・・・・・・・
# LLVMが不要なclangか、gccが不要なLLVMができると良いね(棒読み)
Re: (スコア:0)
これは初耳なんですけどそうなんですか?
llvm-gcc の勘違いじゃなくて?
Re:bootstrapはどうなるの? (スコア:3)
詳細は http://llvm.org/docs/GettingStarted.html [llvm.org] あたりに書いて有りますが,
llvm はバイトコードから native code を作るときに GCC を使います.
そのためllvmのビルドにもGCCが必要です.
厳密にはGCCじゃなくても,solaris の cc のようなCコンパイラがあればビルドできますが
>1. まずclangをビルドします。
>2. gccをビルドする必要がなくなったので終了
というのはありえない話で,1の時点でCコンパイラがすでに使える状態になっています.
Re: (スコア:0)
> 1の時点でCコンパイラがすでに使える状態になっています.
C++コンパイラが必要になるって話じゃなかったの? solarisのccってC++もサポートしてるの?
Re: (スコア:0)
#2214378 [srad.jp]の時点でC++コンパイラがどうのという話とは違ってきています。
突っ込みを入れるならそちらの方にすべきです。
Re: (スコア:0)
1. まず(native ccで)clangをビルドします
が可能なら別におかしくないじゃん。1の時点でCコンパイラしか使えない状態で、C++コンパイラを使えるようにするという話になるんだから。
# そもそもどうみてもジョークなのにネタにマジレスにもほどがある
Re:bootstrapはどうなるの? (スコア:1)
clang は C++ で記述されていますので、「C++コンパイラを手に入れるには」の第一歩でclangが出ている時点でおかしいんですよ。clangがビルドできるなら、そこにC++コンパイラが既にあるってことです。
ジョークとしても微妙に中途半端なネタ…
Re: (スコア:0)
そもそも
> まず(native ccで)clangをビルドします
が出来ないんですよ.
つまり
> # そもそもどうみてもジョークなのにネタにマジレスにもほどがある
何も理解してないのにジョークとネタとか言っちゃうあなたが一番笑えます.
Re: (スコア:0)
>>1. まずclangをビルドします。
>>2. gccをビルドする必要がなくなったので終了
>というのはありえない話で,1の時点でCコンパイラがすでに使える状態になっています.
C++コンパイラが欲しいのにCコンパイラしかインストールされてない……って環境だと、GCCはビルドできないから、
GCCではなくClangをビルドするという選択は普通にあり得るが。
何か勘違いしてね?
Re: (スコア:0)
これは初耳なんですけどそうなんですか?
llvm-gcc の勘違いじゃなくて?
俺も不思議。
llvmはclangでビルドできると思ってたけど……
Re: (スコア:0)
いろいろと勘違いしているよ
Re: (スコア:0)
自分は一言も情報を出さないのでツッコまれる心配と無縁な物知りごっこいつもお疲れ様です。
Re: (スコア:0)
今時LLVMもclangでビルドできるでしょ。もしできないのだとしても、できるようになるのは時間の問題のはず。
#clangはGCC独自拡張も結構対応しているし、ちょっとばかしGCCべったりなコードでもclangでビルドを通すのはそんなに大変ではない可能性が高い。
Re: (スコア:0)
clangをclang-llvmでコンパイルできます?
なんか失敗する。
Re: (スコア:0)
clangじゃアーキテクチャ間の移植性がまだ弱いからgccの代わりにはならないよ
Re: (スコア:0)
Re: (スコア:0)
最新のC++規格(2011)に対応しているC++コンパイラは少ないと思う。
GCC4.7が必要ってのがそのためかは知らんけど。
Re:bootstrapはどうなるの? (スコア:3)
ここでGCC 4.7が登場するのは、たんにC++移行前Cで書かれた最後のバージョンということ以上の意味はないと思います。なので、そこでbootstrapするのは別に4.6でも4.5でもとりあえず完遂できるのではないでしょうか。
Re:bootstrapはどうなるの? (スコア:3)
http://gcc.gnu.org/codingconventions.html#Portability [gnu.org] によれば、C++03を「使ってもいい」ということらしいので、C++03対応は必須、という事になりますかね。 http://gcc.gnu.org/ml/gcc-patches/2012-08/msg01223.html [gnu.org] あたりからのスレの流れも気になりますが、時期的にはgcc3.4とか3.3でも対応していそうな気がします。
-- Takehiro TOMINAGA // may the source be with you!
Re:bootstrapはどうなるの? (スコア:1)
gccのソースだけが手元にあるところから、徒手空拳でgccのバイナリを得るまでの手間が大幅に増えちゃったというか。 今までなら「頑張ってCコンパイラをアセンブラで書け」だったのが「頑張ってC++をアセンブラで書くのは・・・流石に無理だから、Cで書かれた別のC++コンパイラのソースを探せば?」に、ブータビリティ(とか、試しに呼んでみる)が大幅後退しちゃうので。
まあ、そんな心配は妄想上の産物だからこそ、C++で書かれることになったんでしょうけど。「gccをコンパイルできるCで書かれたC++コンパイラ」のソース(以前のgcc?)を常にセットで置いておけば、ほとんど何も変わりませんし。
ただまあ、変な例えだですが、「この車はドライブバイワイヤ採用なので、ハンドル←→前輪、はシャフトでは直結してなくて、モーターで遠隔で動かしてます」と言われたときに感じる「え? いざというとき大丈夫?」感に近いもやもやした気分です。テクノロジの進化でむしろ利点の方が大きくなってるのは理屈では分かるんだけど、そこは直結しといて欲しい! 感覚として! みたいな?
Re: (スコア:0)
> 「もしうっかり、世界中からgccをコンパイル可能なコンパイラのバイナリを消しちゃったらどうしよう?」みたいなネタが気になります。
たとえで言えば、
鉄鉱石や原油の採掘にはこの重機が必要ですが、この重機を作るには鉄が必要で、動かすには燃料が必要です。
もしうっかり、世界中から重機を消しちゃったらどうしよう?
といった感じでしょうか。(鉄鉱石や原油を採掘できてもそれだけで重機や燃料が作れるわけではないですが)。
現代文明そのものが、消してしまうとブートストラップはきわめて難しいようです。
鶏と卵の関係とも言えるかも。生命もブートストラップはきわめて難しいようです。
Re:bootstrapはどうなるの? (スコア:1)
PC上のバイナリに限れば、もうちょっと簡単に実験できそうですが。生のPC1個と、何かのOSのディストリビューションの全ソースが与えられて、そのOSを一番早くコンパイルして起動できた人が勝ちな大会とか。
それだと最初何も出来ないなら、ディップスイッチ→ROMライタみたいなのは用意するとか、細かくはなんかまあ、大会が面白くなりそうなレギュレーションを考えるとして。
Re: (スコア:0)
クロスコンパイルでターゲット用のバイナリを最初に作れば良いだけじゃないか?
ターゲット用の環境でコンパイルして動かしたら自動的にターゲット用のバイナリを出力するわけじゃないぜ?