こんにちは、
私はソフトウェア開発者で、Linuxでのビルドには詳しいが、ほかの人たちがもっと楽にできるよう、いくつかヒントを出そうと思った。
動的リンクしたLinux向けの単一のダウンロードパッケージを配布するときに、一つ大事な点がある。「使える最も古いバージョンのglibc/libstdc++を使うべきだ。つまり、新しい機能やバグ修正が必要だと分かっていないかぎり、実行時のライブラリはもっと新しく、それらの修正を含んでいるものと考えてほしい。」
最新版のglibc/libstdc++にリンクすることの問題は、(これらのバイナリを動かすために)ユーザーにも最新のシステムを強いてしまう点だ。特別な理由がないかぎり、それを必須の前提にすべきではない。そういう理由があるなら、ドキュメントで説明すべきだ。古いシステムで普通にリンクすれば、その古いシステムでも最新のシステムでも動く。
特定の新しいGCC最適化が本当に必要なCコードの部分があるなら、最新のGCCで一度生成したASMのダンプファイル(*.s)を用意してソースに含め、誰でも(古いGCCでも)コンパイルできるようにすることを考えてほしい。
いくつか勧めておく:
- バイナリのビルドには、使える最も古いベースのディストリビューションを使う。たとえば、今のDebianリリースの最新のコピーではなく、_前回_のDebianリリースの最新のコピーだ。
- 静的バイナリを含むダウンロードを用意する(リンク時に
-staticオプションを使い、実行ファイル名をbitcoind-staticのようにするといい)。これは別のダウンロードファイルにする。 - ソースディストリビューションのビルドが、必要なライブラリの作業用コピーから動くようにする。特にboostとwxWidgetsで、ビルドにとても新しいバージョンが必要だと分かっているなら、それぞれのビルドツリーから直接ビルドとリンクができるようにする(インストールしなくて済むように)。/usr/localへのインストールは問題になりうる(私にとっては確実に問題だ)が、ビットコイン専用にカレントディレクトリに置くのは問題ない。結局、ビットコインがビルドに必要なのはヘッダーファイルとDSOか*.aへのアクセスで、実行時に必要なのはDSOへのアクセスだ。
24時間365日動くヘッドレスのbitcoindを立ち上げることはできるが、これらの問題のせいで、解決する時間を見つける/作るまでは、今のところできない。