次: , 上: Dlopened modules


9.1 dlopenのためのモジュールのビルド

オペレーティングシステムには,プログラムシンボルをdlsym(または その等価)関数を用いてダイナミックに解決するために,特別に宣言する必要 があるものもあります.

libtoolは,`-export-dynamic'と`-module'リンクフラグを提供し (see Link mode),それはこの宣言を行います.他のモジュールやdlopen されているlibtoolライブラリをdlopenするアプリケーションプログラムをリ ンクする場合,これらのフラグを使用する必要があります.

例えば,後でアプリケーションにdlopenされる共有ライブラリ libhelloをビルドしたい場合,他のリンクオプションに `-module'を加えます.

     burger$ libtool --mode=link gcc -module -o libhello.la foo.lo \
                     hello.lo -rpath /usr/local/lib -lm
     burger$

実行形式からのシンボルが,dlopenしたいライブラリの未解決の参照 を満足させる必要がある場合,フラグ`-export-dynamic'を使用する必要 があります.dlopenを呼び出す実行形式をリンクするとき, `-export-dynamic' を使用してください.

     burger$ libtool --mode=link gcc -export-dynamic -o hell-dlopener main.o
     burger$