gccで使えるライブラリ(.a)の作成方法のメモ。
以下、cygwinで試した結果。
-- a1.c --
int AAA=123;
----------
コンパイルする。
$ gcc -c a1.c
できあがった内容を見る。
$ nm -g a1.o
00000000 D _AAA
ライブラリをarで作る。
$ ar -r a.a a1.o
ar: creating a.a
できた内容をチェック。
$ nm -sg a.a
Archive index:
_AAA in a1.o
a1.o:
00000000 D _AAA
インデックスを作ったほうがリンクが速くなるらしい。
既にインデックスができてそうだが、調べた範囲では
ar -r に続いて ar -s を実行するのが通常のようだ。
そこで一応、実行して見る。インデックスを作るには、
ranlib か ar -s を実行する。この2つのコマンドは
等価とのこと。
http://www.linux.or.jp/JM/html/GNU_binutils/man1/ar.1.html
実行してみる。
$ ar -s a.a
$ nm -sg a.a
Archive index:
_AAA in a1.o
a1.o:
00000000 D _AAA
変化なし。必要なのだろうか?
最後に、できあがったa.aをリンクする。-- main.c --
#include <stdio.h>というファイルを作って、コンパイル&リンク&実行すると、
int main(void)
{
printf("%d\n",AAA);
}
$ gcc main.c a.a
$ ./a.exe
123
となる。
0 件のコメント :
コメントを投稿