http://www.linux.or.jp/JF/JFdocs/Program-Library-HOWTO/shared-libraries.html
http://www.hi-ho.ne.jp/babaq/linux/libtips.html
foo.c
#include <stdio.h> void foo() { puts("foo()"); }
foo.h
void foo();
ビルド
~/work$ gcc -fPIC -g -c foo.c
~/work$ gcc -shared -Wl,-soname,libfoo.so.1 -o libfoo.so.1.0.1 foo.o
~/work$ ls *foo*
foo.c foo.cpp foo.o foo.zip libfoo.so.1.0.1
foo.hとlibfoo.so.1.0.1をコピー
~/work$ cp libfoo.so.1.0.1 /usr/local/lib/
~/work$ cp foo.h /usr/local/include
~/work$ ls /usr/local/lib/*foo*
/usr/local/lib/libfoo.so.1 /usr/local/lib/libfoo.so.1.0.1
bar.c
#include <foo.h> int main() { foo(); }
bar.cをビルド…失敗
~/work$ gcc bar.c -lfoo -o bar
/usr/bin/ld: cannot find -lfoo
collect2: ld returned 1 exit status
シンボリックリンクを作ってldconfig
~/work$ cd /usr/local/lib/
/usr/local/lib$ ln -s libfoo.so.1.0.1 libfoo.so
/usr/local/lib$ ldconfig*1
bar.cをビルド、実行
vps10137:/usr/local/lib# vps10137:~# cd ~・work/
vps10137:~/work# gcc bar.c -lfoo -o bar
vps10137:~/work# ./bar
foo()
「/usr/local/include」はなんで参照されてるんだっけ?
*1:「ldconfig -n /usr/local/lib/」だとだめだった