差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
tips:how-to-update [2014/10/07 18:05]
rpp [配布パッケージ]
tips:how-to-update [2014/10/31 07:41] (現在)
rpp [配布パッケージ]
ライン 5: ライン 5:
  ​メジャー.マイナー.リビジョン  ​メジャー.マイナー.リビジョン
 で管理する。 で管理する。
-== メジャーバージョン ==+=== メジャーバージョン ​===
 プログラムの根幹にかかわるような大きな変更 プログラムの根幹にかかわるような大きな変更
  
-== マイナーバージョン ==+=== マイナーバージョン ​===
 それなりに大きな変更。 それなりに大きな変更。
 +
 (外部から見える)新しい関数の追加など。 (外部から見える)新しい関数の追加など。
 +
 プログラマが大きな変更だと思えば自由に増加させて良い。 プログラマが大きな変更だと思えば自由に増加させて良い。
 +
 ここが増えるとやる気が上がるらしい。 ここが増えるとやる気が上がるらしい。
 +
 メジャーバージョンが上がると0にリセットされる。 メジャーバージョンが上がると0にリセットされる。
  
-== リビジョン番号 ==+=== リビジョン番号 ​===
 バグフィックスや外部から見えない小さな変更など。 バグフィックスや外部から見えない小さな変更など。
 +
 マイナーバージョンが上がると0にリセットされる。 マイナーバージョンが上がると0にリセットされる。
-ユーティリティーやサンプルプログラムの追加・変更はここの変更で行う. 
  
-== ライブラリのバージョン管理形式 ​ ==+ユーティリティーやサンプルプログラムの追加・変更はここの変更で行う。 
 + 
 +=== ライブラリのバージョン管理形式  ​===
 プロジェクト内部の共有ライブラリはプロジェクトのバージョンに加えて別のバージョン管理を行う。 プロジェクト内部の共有ライブラリはプロジェクトのバージョンに加えて別のバージョン管理を行う。
 +
 このプロジェクトのバージョン管理システムを使うことで、Makeしなおさなくてもライブラリが使えるようになる。 このプロジェクトのバージョン管理システムを使うことで、Makeしなおさなくてもライブラリが使えるようになる。
  
-== バージョニング == +=== バージョニング ​=== 
-以下Manpageより抜粋+以下Manpageより抜粋。 
 libtool は共有ライブラリ用に独自のバージョニングシステムを持っている。 libtool は共有ライブラリ用に独自のバージョニングシステムを持っている。
 +
 このシステムを使いたい場合は、-version-info オプションを使わなければならない。 このシステムを使いたい場合は、-version-info オプションを使わなければならない。
-このオプションは ​+ 
 +このオプションは ​
 <​code>​ <​code>​
 CURRENT[:​REVISION[:​AGE]] ​ CURRENT[:​REVISION[:​AGE]] ​
 </​code>​という形式の引数を受け付ける。 </​code>​という形式の引数を受け付ける。
  
-==== CURRENT ​====+== CURRENT ==
 インターフェースのバージョン。インターフェースとは "​外側"​ の世界に見えるすべてのもので、変数・関数プロトタイプ・出力形式などである。 ​ インターフェースのバージョン。インターフェースとは "​外側"​ の世界に見えるすべてのもので、変数・関数プロトタイプ・出力形式などである。 ​
  
ライン 41: ライン 51:
 == AGE == == AGE ==
 このライブラリが実装している最新のインターフェースと最古のインターフェースとの違い。 このライブラリが実装している最新のインターフェースと最古のインターフェースとの違い。
-言い替えると、このライブラリは `CURRENT - AGE' から CURRENT までの範囲のすべてのインターフェース番号を実装していて、このバージョンの範囲にあるライブラリに対して過去にリンクされたすべての実行ファイルは、このライブラリを使うことができる、ということである。 ​+ 
 +言い替えると、このライブラリは `CURRENT - AGE' から CURRENT までの範囲のすべてのインターフェース番号を実装していて、 
 + 
 +このバージョンの範囲にあるライブラリに対して過去にリンクされたすべての実行ファイルは、このライブラリを使うことができる、ということである。 ​
  
 REVISION と AGE が省略された場合のデフォルトは 0 である。 REVISION と AGE が省略された場合のデフォルトは 0 である。
 +
 AGE は CURRENT インターフェース番号より小さいか等しくなければならないことにも注意すること。 AGE は CURRENT インターフェース番号より小さいか等しくなければならないことにも注意すること。
 +
 2 つのライブラリが同一の CURRENT 番号と AGE 番号であるとき、ダイナミックリンカは大きい REVISION 番号のライブラリを選択する。 2 つのライブラリが同一の CURRENT 番号と AGE 番号であるとき、ダイナミックリンカは大きい REVISION 番号のライブラリを選択する。
  
-== バージョニングのガイドライン ​ ==+=== バージョニングのガイドライン  ​===
   - それぞれの libtool ライブラリについて `0:​0:​0'​ というバージョン情報から始めなさい。   - それぞれの libtool ライブラリについて `0:​0:​0'​ というバージョン情報から始めなさい。
   - バージョン情報を更新するのはソフトウェアの公開リリースの直前だけにしなさい。頻繁な更新は不必要であり、現在のインターフェース番号が大きくなるのを早くするだけである。 ​   - バージョン情報を更新するのはソフトウェアの公開リリースの直前だけにしなさい。頻繁な更新は不必要であり、現在のインターフェース番号が大きくなるのを早くするだけである。 ​
ライン 55: ライン 70:
   - 前回の公開リリースからインターフェースが削除されたなら、AGE を 0 にしなさい。 ​   - 前回の公開リリースからインターフェースが削除されたなら、AGE を 0 にしなさい。 ​
  
-パッケージバージョンをライブラリ名にエンコードしたい場合や、 libtool のバージョニングと衝突せずに他のバージョニングシステムを使いたい場合は、<​code>​-release</​code>​ を使うこと。たとえば binutils-2.7.0.2 に付属する <​code>​libbfd.so.2.7.0.2</​code>​ は libtool のバージョニングと明らかに衝突する。 <​code>​-release 2.7.0</​code>​ を使えば <​code>​libbfd-2.7.0.so.0.0.0</​code>​ で終ることができる。+パッケージバージョンをライブラリ名にエンコードしたい場合や、 libtool のバージョニングと衝突せずに他のバージョニングシステムを使いたい場合は、 
 +<​code>​-release</​code>​ を使うこと。たとえば binutils-2.7.0.2 に付属する <​code>​libbfd.so.2.7.0.2</​code>​ は libtool のバージョニングと明らかに衝突する。 <​code>​-release 2.7.0</​code>​ を使えば <​code>​libbfd-2.7.0.so.0.0.0</​code>​ で終ることができる。
  
 異なる CURRENT バージョンのライブラリや異なる -release のライブラリはバイナリ非互換であろう。 異なる CURRENT バージョンのライブラリや異なる -release のライブラリはバイナリ非互換であろう。
ライン 61: ライン 77:
 === 更新方法 ​ === === 更新方法 ​ ===
 各ライブラリのMakefile.amの '​_la_LDFLAGS'​ を更新する。 各ライブラリのMakefile.amの '​_la_LDFLAGS'​ を更新する。
 +
 上記を簡単にまとめると、更新したときは、 上記を簡単にまとめると、更新したときは、
  
ライン 68: ライン 85:
 |インターフェースを削除・変更したときは|C++|R=0|A=0| |インターフェースを削除・変更したときは|C++|R=0|A=0|
    
-  * ここでいうインターフェースとはユーザプログラムで使用する関数のこと +  * ここでいうインターフェースとはユーザプログラムで使用する関数のこと 
-  * インターフェースを削除、変更するとユーザープログラムを再コンパイルする必要がある+  * インターフェースを削除、変更するとユーザープログラムを再コンパイルする必要がある
  
 ^ ^CURRENT ^ REVISION ^ AGE| ^ ^CURRENT ^ REVISION ^ AGE|
ライン 83: ライン 100:
 === autotools ​ === === autotools ​ ===
 自動的にMakefile、依存ライブラリのチェックなどを行ってくれる支援ソフト。 自動的にMakefile、依存ライブラリのチェックなどを行ってくれる支援ソフト。
 +
 配布パッケージの作成、インストールなどを自動的に行ってくれるので、便利。 配布パッケージの作成、インストールなどを自動的に行ってくれるので、便利。
-使い方は[[index:​internal-notice:​how-to-autotools]]が詳しい+ 
 +使い方は[[how-to-autotools]]が詳しい
  
 == 作り方 ​ == == 作り方 ​ ==
   $ make dist   $ make dist
 でtarファイルが作成されることが望ましい。 でtarファイルが作成されることが望ましい。
 +
 自分の環境をtarでまとめると、編集したときのバックアップファイルなどのゴミが残ってしまう。 自分の環境をtarでまとめると、編集したときのバックアップファイルなどのゴミが残ってしまう。
 +
 そこでmake distで配布するファイルだけがtarにまとまるような状況が望ましい。 そこでmake distで配布するファイルだけがtarにまとまるような状況が望ましい。
-(Autotoolsで作成すれば、自動的にmake distでtarファイルができるようになります)+ 
 +(Autotoolsで作成すれば、自動的にmake distでtarファイルができるようになります)
  
 == 作業手順 ​ == == 作業手順 ​ ==
 上のバージョン管理方法に従って更新する。 上のバージョン管理方法に従って更新する。
 +
 ChangeLogに変更した部分を書いておくこと! ChangeLogに変更した部分を書いておくこと!
  
-==autotoolsを使っている場合 ​**==+  *autotoolsを使っている場合 
   $ emacs configure.ac // configure.ac[in?​]のバージョン部分を更新~   $ emacs configure.ac // configure.ac[in?​]のバージョン部分を更新~
   $ emacs Makefie.am ​  // (lib***.cを変更したとき、そのlibがあるフォルダのMakefileでライブラリのバージョン部分を変更)   $ emacs Makefie.am ​  // (lib***.cを変更したとき、そのlibがあるフォルダのMakefileでライブラリのバージョン部分を変更)
ライン 106: ライン 130:
   $ make dist   $ make dist
  
-==autotoolsを使っていない場合 ​==+  *autotoolsを使っていない場合 
 Makefileのバージョン部分を更新 Makefileのバージョン部分を更新
   $ gedit Makefile   $ gedit Makefile
ライン 119: ライン 144:
  
 === ldconfigについて ​ === === ldconfigについて ​ ===
-現在 make install時に自動的に ldconfig が実行されるようになっている。\\ +現在 make install時に自動的に ldconfig が実行されるようになっている。 
-デフォルトでわざわざldconfigが実行されないようになっている。\\+ 
 +デフォルトでわざわざldconfigが実行されないようになっている。 
 これは、ldconfigを実行するにはroot権限が必要であることから、sudoを付けて実行しないとき(/​usr/​local/​にインストールではなく別の場所を指定したときなど)にエラーがでることを防いでいるためである。 これは、ldconfigを実行するにはroot権限が必要であることから、sudoを付けて実行しないとき(/​usr/​local/​にインストールではなく別の場所を指定したときなど)にエラーがでることを防いでいるためである。
  
-本当は自分がroot権限を持っているかを確認してからldconfigを実行すべきである。\\+本当は自分がroot権限を持っているかを確認してからldconfigを実行すべきである。
  
tips/how-to-update.1412672755.txt.gz · 最終更新: 2014/10/07 18:05 by rpp
CC Attribution-Share Alike 3.0 Unported
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0