が位置独立オブジェクト コード ファイルおよびlibabc.so
から取得されたとします。次に、たとえばでそれらを構築しましたabc1.pic.o
abc2.pic.o
gcc -Wall -fPIC -O -g abc1.c -c -o abc1.pic.o
gcc -Wall -fPIC -O -g abc2.c -c -o abc2.pic.o
そして、あなたはで構築libabc.so
します
gcc -shared abc1.pic.o abc2.pic.o -L/usr/local/lib -l123 -o libabc.so
共有ライブラリがあると想定しているため、-L/usr/local/lib
前 に追加しました。-l123
/usr/local/lib/lib123.so
Program Library HowToもお読みください。
lib123.so
ご覧のとおり、共有ライブラリを自分の共有ライブラリにリンクできますlibabc.so
次に、で確認しますldd libabc.so
リンク コマンドにandを追加して、いくつかのrpathを設定したい場合があります。libabc.so
-Wl,-rpath
-Wl,$RPATHDIR
詳細については、Drepper の論文How to write shared libraries を参照してください。
PS。静的ライブラリを使用しないlib123.a
でください (PIC である必要があります)。非 PIC コードを共有オブジェクトにリンクすると、共有オブジェクトの利点のほとんどが失われ、動的リンカーld.soは無数の再配置を行う必要があります。