2016-10-25 6 views
0

libtool:私のモジュールへのパスは何ですか?私はautotoolsの+ libtoolのプロジェクトからモジュールを作成してい

#the module:              
lib_LTLIBRARIES = mmmm.la           
mmmm_la_SOURCES = mmmm.c         
mmmm_la_LDFLAGS = $(AM_LDFLAGS) -module -shared 

を次のように Makefile.amに見える、私は私のモジュールのためのCのテストを書きたいです。試験は、試験に比べて私はC試験でdlopen()またはlt_dlopen()に与えるべき何パス(.xxが.so又は.laある)

を共有オブジェクトmmmm.xxをロード?:私のモジュールの相対位置(開始すべきですプログラムは)私がテストMakefile.amに合格し-dlopenオプションはautotoolsのが見つけるのに役立つだろうと期待してlt_dlopen()で試してみました...

私がチェック、木のうち、チェック、またはメークinstallcheckを作る作るのですかどうかに応じて異なりますlib lt_dlopen()が呼び出されたときに、lib:lt_dlopen().laファイルを開くことができますが、それでも実際にはwherに伝える必要がありますEそのファイルは(おそらく.LIBSディレクトリをommiting)に配置され

ltdlのlibにテストするときに私のテストのmakefileは次のようになります。

#the module test (tests are also installed, hence the "test" prefix) 
test_PROGRAMS = tttt 
tttt_SOURCES = tttt.c 
tttt_LDADD = "-dlopen" mmmm.la 
tttt_DEPENDENCIES = mmmm.la 

どれでも良いヒントを?

答えて

0

あなたがそれに対処できる方法の1つは、LD_LIBRARY_PATH環境変数をライブラリのインストール先に設定することです。

しかし、あなたがテストのために必要とするので、変数をconfigure.acからconfig.hにエクスポートすると言うでしょう。したがって、config.hを含むファイルは、dlopenのパスを設定するために使用できる#define your_variableを持ちます。

+0

hmmm。どちらのソリューションもハックのように聞こえます。libtoolとautotoolsを使うのは、可能な限りOSを抽象化することです(ポータブルにする)。 * .soファイル名やLD_LIBRARY_PATHをハードコーディングすると、私たちはサポートしたいOSの小さなサブセットを実際に想定しています(明確にはlinuxをコーディングします)。しかし、それは唯一の(悪い)解決策かもしれません。私はそれがうまくいくと思うので、答えを受け入れるでしょう:そして、あなたは試してみる価値があります。 – user1159290

関連する問題