我使用autotools
构建一个库,稍后将由另一个程序加载。这个库必须有一个.so
扩展名,无论我在哪个平台上(这是程序加载它所强加的要求),我也希望它没有版本说明符。如何设置此类库的输出名称?
这是Makefile.am
的样子
lib_LTLIBRARIES = mylib.la
mylib_la_SOURCES = mylib.c
mylib_la_CPPFLAGS = $(LTDLINCL)
mylib_la_CFLAGS = $(CFLAGS) $(LIBFFI_CFLAGS)
LDADD = $(LIBLTDL) -dlopen self
通过libtool
联机帮助页,我似乎需要设置-install_name
,但我不会在生成的Makefile
任何地方看到它被引用。
我还需要能够在Makefiles
的其他地方引用这个库的输出目录(用于测试目的),是否有一个包含其基本名称或完整路径的变量?
答案 0 :(得分:0)
如何设置此类库的输出名称?
库的输出名称将是lib_LTLIBRARIES
中没有后缀.a
的名称。它默认会生成一个共享库 - .so
。因此,您无需指定任何其他内容。
我还需要能够在Makefile的其他地方引用这个库的输出目录(用于测试目的),是否有一个包含其基本名称或完整路径的变量?
Makefile中的变量$(libdir)
或@libdir@
将指向库目录的完整路径。