はじめに (タイトルはScala の機能がコンパイル速度に与える影響にインスパイアされました。) Goのコンパイル速度の速さはセールスポイントの一つです。しかし、そんなGoもcgoを使い始めるとコンパイルが途端に遅くなります。あんまりこのあたりについて言及しているエントリがないので書いてみることにしました。 このエントリではサンプルプログラムがいっぱい出てくるので以下のリポジトリにまとめました。 また、コンパイル速度の比較もmakeで行えるようになっています。
個人的に、Go言語からのバインディングに興味をもち、ちょうど必要だったmecabのバインドをつくっている。(shinpei/go-mecab)Go言語には、バインディングのためのCGO(シーゴー)というツールがついている。そこでgo-mecabの経験から、Goでのバインディングメモを書いてみた。先に、まとめておくと、CGOには以下のよい点、よろしくない点があった。 Cの関数を直接呼べる。このためラッパー関数は(ほぼ)必要ないのは楽で良い。 CのソースをGoの中に書ける。必要なラッパーはここで追加できるのは楽で良い。 typedefされたシンボルを区別する。このため、型変換関数を定義する必要があり、よろしくない。 コンパイルに必要なLDFLAGSなどをテキストとして読む。pkg-configなどが使えずよろしくない。 3,4について、特に4について、workaroundをお持ちの方は、教えて
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く