Linux C言語共有ライブラリを作成するときの
RedHatLinux7.3(2.96-110)、gcc(2.96 20000731)です。
C言語で共有ライブラリを作成しています。このライブラリは呼び出し側のプログラム起動時にロードされるものなのですが、以下の2つの手順で生成されたライブラリは、どのような違いがあるのでしょうか?
どちらも呼び出し側からは関数コールで実行できるのですが、どちらが正しいのでしょうか?
【その1】
1) gcc -shared -o libxxx.so xxx.c (ライブラリ生成)
2) gcc ./libxxx.so -o testcall testcall.c (呼び出し側とライブラリをリンクして実行ファイル生成)
【その2】
1) gcc -fPIC -c libxxx.c(ライブラリのオブジェクト生成)
2) gcc -fPIC -c -shared -Wl,-soname,libxxx.so.0 -o libxxx.so.0.0 xxx.o(共有ライブラリ生成)
3) soname設定
4) linkername設定
5) gcc -c -o testcall.o testcall.c(呼び出し側オブジェクト生成)
6) gcc -o testcall testcall.o -lxxx
7) LD_LIBRARY_PATH設定、exportする
以上、ご存知のかた、どうぞよろしくお願いします。
お礼
ご回答ありがとうございます。 (2)です。 CでRubyを呼び出す方法は分かっていますが、 配布用にライブラリ化する、というのが 分かりませんでした。 そもそもコンパイルする言語ではないので、 あきらめてはいましたが・・・ ありがとうございます。