はてなキーワード: cvsとは
gccの構文解析の結果(構文木)を、XMLとして出力してくれるツールです。C++の構文解析はやたらと面倒らしいので、こういうのがあるとうれしいみたいよ。
「Py++」というC++のPytyonバインディングで使われていたので、必要になりました。gcc-xml 0.6はバイナリで配布されてるんだけど、MSVC7.1までしか対応してないようで、Visual Studio 2005だと使えませんでした。うーん、困った。というわけで、最新版のソース一式を取得してビルドしてみます。
gcc-xmlのビルドには、CMakeというツールが必要になります。CMakeは、オープンソースでクロスプラットフォームのビルドシステムなんだとか。CMakeの公式サイトから、Windows版のインストーラーをダウンロードしてインストールしよう。
実は最初は、ここでcygwinのsetup.exe経由でのインストールをしてたんですけど、これだとgcc-xmlのビルドの段階でエラーが発生しちゃいました。この原因がどうしてもわかんなかったので、あきらめて公式サイトのインストーラーを使うことにした次第です。
ソース一式はCVSから取得できます。CVSクライアントはいろんなのがあるので、好きなクライアントを使って取得しよう。ここではcygwinのCVSを使って、シェルから以下の命令を実行して取得しました。40MBくらいあるみたい。
$ cvs -d :pserver:anoncvs@www.gccxml.org:/cvsroot/GCC_XML co gccxml
「Visual Studio 2005 コマンドプロンプト」を起動してください。起動したら、さきほど取得したソース一式が格納されているディレクトリに移動して、以下の命令を実行します。
$ cmake .
cmake.exeにはあらかじめパスを通しておくか、パスを直接指定するのを忘れずにね。
gcc-xmlのビルドはまだ終了してなかった! 一度ビルドが終了しても、第二第三のビルドが必要となって…。などと恐れおののきましたが、二段階でいいみたい。
さきほどの処理が終了すると、同じディレクトリに"gccxml.sln"というソリューションファイルが新しくできあがっているかと思います。これをVisual Studio 2005から開いて、Releaseビルドしよう。ビルドが終了したら、以下の5つの実行ファイルができあがっているはずです。
まずは環境変数の設定です。Visual Studio 2005を使っていることを、gcc-xmlに高らかに宣言しておこう。
$ set GCCXML_COMPILER=msvc8
つぎに、gccからVisual Studio 2005のインクルードファイルを使えるよう、パッチをあてます。ありがたいことに、"GCC_XML/VcInstall"ディレクトリ以下にVisual Studioのバージョンによってパッチが用意されています。そのディレクトリと、パッチを当てたファイルを出力するディレクトリ("gccxml.exe"が置いてあるディレクトリ)を指定して、"gccxml_vcconfig.exe"を実行してください。
$ bin/release/gccxml_vcconfig GCC_XML/VcInstall/ bin/release
あとはbin/releaseにパスを通せば、gcc-xmlが使えるようになったはずです。bin/release以下をどこか適当なディレクトリにコピーして、そこにパスを通してもオッケイです。やったね! というわけで、さっそく試してみましょう。
$ gccxml eample1.cpp -fxml=example1.xml
ここでは、解析するC++のソースファイルとしてeample1.cppを入力し、eample1.xmlを出力しています。ちゃんと出力できたかな? できたー! やったー!
以上で終わりです。
マシン語の話
まず
だいたいそういう人達は人ハードウェア知識云々をもとより人から言われるまでもないだろうし
shi3z氏が檄を飛ばす想定読者もおそらく俺のようないわゆる受託業務システム開発を
しているような人間たちだ。
べつに低レベルアーキテクチャの知識はあればあったで困らないのは事実だし
プロなら最低限は知っとくべきレベルというのは実際あるし
無駄だと言う気はまったくない。
ただ
もし、仕事でその知識を認められたい、あばよくば給料やキャリアの足しにしたい、
などという下心があるのなら、下記のことは知っておくべきだ。
『少なくとも自分のいるチームのNo.1にならなければほとんど評価すらされない。』
はっきり言うと俺らの世界では
規模と場合によっては会社に一人か二人いれば十分なんである。
ある意味ではフルタイムで雇うほどの需要すらないとさえいえる。
たまに必要なときだけ相談したり調査を頼めればすんでしまうわけで、
地味なプログラムを組んだりしてるのだ。
ましてチーム全員がプロファイラやデバッガを使いこなせる必要なんか全然ないんである。
上で書いた「プロとしての最低限のレベル」ってのは
バイナリハッカーに相談すべきときに相談できる判断力があるかってことなんである。
(故にそれはできて当たり前であって評価の対象にはならない。)
しかし別の面から見ると
shi3z氏みたいなバイナリハッカーだけでは全然足りないのだ。
DBのインデックスやパラメータの最適化や分散設定ができるやつは身近にいるか?
Apacheやルータ、ロードバランサの設定や専門家は回りにいるか?
先輩から教わったCVS(やSubversion)の使い方がどうもgoogle様の
ご宣託と違うような気はしないか?
共通ライブラリやお仕着せのフレームワークの仕組みや動作に疑問はないか?
等など、、、
状況によっては
むしろ自分にとって手の届くニッチ(はまりどころ)があると喜ぶべきかもしれない。
上記のほとんど全部をこなせるような人間が稀にいないわけではない。
しかし臆することはない。
目と手は2つづつしかついていない。
人の時間とモチベーションは有限かつ希少な資源であり、