最初の選択画面がすこし変わっているが、あとは同じ手順。
以下の例はOSはSnow Leopard 10.6.6, xcodeは3.2.5です
Xcodeのメニュー、「ファイル」「新規プロジェクト...」からBSD C Libraryを選ぶ
(ここでTypeをStaticにしておくと静的ライブラリが作れるのかもしれない)
プロジェクト名は、ここではとりあえずmydylibにしておく。
Sourceを選択して(中身は空)、「ファイル」「新規ファイル...」からここではC Fileを選ぶ。
Cのファイル名は、ここではとりあえずmyfunction.c にしておいた。 ここに、
int myAdd(int a, int b) { return a+b; }
という関数を書いてみる。これをビルドすると、mydylib/build/Debug/libmydylib.dylib というファイルが出来上がる。
必要ならば、「プロジェクト」メニューの、 「アクティブアーキテクチャを設定」からプロセッサを選んだり、 「アクティブなビルド構成を設定」からdebugでなくreleaseを選んだりできる。 また「アクティブなターゲットxxxxを編集」では、インストール先などを指定できる。
出来上がったファイルは、
sudo mv ibmydylib.dylib /usr/local/lib/.
に移動しておく必要がある。
次のコマンドで、出来上がったライブラリを確かめることができる。
$ lipo -info /usr/local/lib/libmydylib.dylib Non-fat file: /usr/local/lib/libmydylib.dylib is architecture: x86_64
ここで作ったlibmydylib.dylibを他のCプログラムから使ってみる。 XcodeでCommand Line Toolのプロジェクトを作る。
この中で、
int myAdd (int a, int b); int main (int argc, const char * argv[]) { printf("value is %d\n", myAdd(3, 5)); return 0; }
というようなプログラムを書く。 また、libmydylib.dylibをドラッグアンドドロップなどして、プロジェクトに追加しておく。 (ここでは簡単にSourceグループに追加した)
これを動かすと、
run [Switching to process 2114] 実行中... value is 8
のような結果が得られる
以下のサイトによると、 こうして作った動的ライブラリは、REALbasicからも利用できるようです。
staticを選択してみる。
ここでプロジェクトを、stalibと命名。 プロジェクトにCプログラムを追加して、そこにこんなプログラムを書いてみる。
int staticAdd(int a, int b) { return a+b; }
これをビルドすると、 できあがったライブラリファイルは拡張子が.a。 これも/usr/local/libにコピー。 情報を見ると以下のようになっている。
$ lipo -info /usr/local/lib/libstalib.a input file /usr/local/lib/libstalib.a is not a fat file Non-fat file: /usr/local/lib/libstalib.a is architecture: x86_64
これも同様に、以下のようにして、他のプログラムから利用出来る。