libtool:我的模块的路径是什么?
libtool: what is the path to my module?
我正在从 autotools+libtool 项目创建一个模块:
Makefile.am 看起来如下
#the module:
lib_LTLIBRARIES = mmmm.la
mmmm_la_SOURCES = mmmm.c
mmmm_la_LDFLAGS = $(AM_LDFLAGS) -module -shared
现在,我想为我的模块编写 C 测试。测试应该开始加载共享对象 mmmm.xx(其中 .xx 是 .so
或 .la
)
在我的 C 测试中,我应该给 dlopen()
或 lt_dlopen()
什么路径?:我的模块的相对位置(与测试程序相比)是不同的,这取决于我是否进行检查, out of tree make check, 或者 make installcheck...
我尝试使用 lt_dlopen()
,希望在测试 Makefile.am
中传递的 -dlopen
选项可以帮助 autotools 在调用 lt_dlopen()
时找到 lib,但确实如此似乎没有帮助:lt_dlopen()
确实可以打开 .la
文件,但仍然必须告诉该文件所在的位置(可能省略 .libs 目录)
在使用 ltdl
库进行测试时,我的测试 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
有什么好的提示吗?
处理该问题的一种方法是将 LD_LIBRARY_PATH
环境变量设置为库的安装位置。
但是,由于您需要它进行测试,我会说从 configure.ac
导出一个变量到 config.h
。因此,任何包含 config.h
的文件都会有一个 #define your_variable
,可用于设置 dlopen
.
的路径
我正在从 autotools+libtool 项目创建一个模块: Makefile.am 看起来如下
#the module:
lib_LTLIBRARIES = mmmm.la
mmmm_la_SOURCES = mmmm.c
mmmm_la_LDFLAGS = $(AM_LDFLAGS) -module -shared
现在,我想为我的模块编写 C 测试。测试应该开始加载共享对象 mmmm.xx(其中 .xx 是 .so
或 .la
)
在我的 C 测试中,我应该给 dlopen()
或 lt_dlopen()
什么路径?:我的模块的相对位置(与测试程序相比)是不同的,这取决于我是否进行检查, out of tree make check, 或者 make installcheck...
我尝试使用 lt_dlopen()
,希望在测试 Makefile.am
中传递的 -dlopen
选项可以帮助 autotools 在调用 lt_dlopen()
时找到 lib,但确实如此似乎没有帮助:lt_dlopen()
确实可以打开 .la
文件,但仍然必须告诉该文件所在的位置(可能省略 .libs 目录)
在使用 ltdl
库进行测试时,我的测试 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
有什么好的提示吗?
处理该问题的一种方法是将 LD_LIBRARY_PATH
环境变量设置为库的安装位置。
但是,由于您需要它进行测试,我会说从 configure.ac
导出一个变量到 config.h
。因此,任何包含 config.h
的文件都会有一个 #define your_variable
,可用于设置 dlopen
.