未安装autotools/libtool共享库



也许有一些非常基本的事情我不知道,但我面临着一个非常奇怪的行为:在我的libtool共享库正确构建后,它会立即被删除。

基本上,这个Makefile.am:

ACLOCAL_AMFLAGS = -I m4 --install
lib_LTLIBRARIES =
if BUILD_WIRINGPI_STUB
lib_LTLIBRARIES += libwiringPiStub.la
# headers to be installed
include_HEADERS = 
src/wiringPi-stub/wiringPi.h
endif
LIBTOOL_DEPS = @LIBTOOL_DEPS@
# libwiringPiStub.{so,a}
libwiringPiStub_la_LDFLAGS = -rpath '$(libdir)' -version-info $(WIRINGPI_STUB_SOVERSION)
libwiringPiStub_la_SOURCES = src/wiringPi-stub/wiringPi.c
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = src/wiringPi-stub/libwiringPiStub.pc

生成这个构建历史,看起来不错:

% make libwiringPiStub.la
depbase=`echo src/wiringPi-stub/wiringPi.lo | sed 's|[^/]*$|.deps/&|;s|.lo$||'`;
/bin/sh ./libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I.     -g -O2 -MT src/wiringPi-stub/wiringPi.lo -MD -MP -MF $depbase.Tpo -c -o src/wiringPi-stub/wiringPi.lo src/wiringPi-stub/wiringPi.c &&
mv -f $depbase.Tpo $depbase.Plo
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -g -O2 -MT src/wiringPi-stub/wiringPi.lo -MD -MP -MF src/wiringPi-stub/.deps/wiringPi.Tpo -c src/wiringPi-stub/wiringPi.c  -fno-common -DPIC -o src/wiringPi-stub/.libs/wiringPi.o
/bin/sh ./libtool  --tag=CC   --mode=link gcc  -g -O2 -rpath '/usr/local/lib' -version-info 1:0:0  -o libwiringPiStub.la  src/wiringPi-stub/wiringPi.lo  -lpthread -lm 
libtool: link: gcc -dynamiclib -Wl,-undefined -Wl,dynamic_lookup -o .libs/libwiringPiStub.1.dylib  src/wiringPi-stub/.libs/wiringPi.o   -lpthread -lm  -g -O2   -install_name  /usr/local/lib/libwiringPiStub.1.dylib -compatibility_version 2 -current_version 2.0 -Wl,-single_module
libtool: link: (cd ".libs" && rm -f "libwiringPiStub.dylib" && ln -s "libwiringPiStub.1.dylib" "libwiringPiStub.dylib")
libtool: link: ( cd ".libs" && rm -f "libwiringPiStub.la" && ln -s "../libwiringPiStub.la" "libwiringPiStub.la" )

事实上,在我的带有make install的$(libdir(中没有安装任何东西,或者是include-dir中的头文件

这是make install执行的输出:

% make install                       
cd . && /bin/sh ./config.status config.h
config.status: creating config.h
config.status: config.h is unchanged
/usr/local/bin/gmkdir -p '/usr/local/lib/pkgconfig'
/usr/local/bin/ginstall -c -m 644 src/wiringPi-stub/libwiringPiStub.pc '/usr/local/lib/pkgconfig'

事实上,只有.pc文件被实际移动到位。我该如何解决此问题?

所提供的Automake输入文件似乎没有任何固有的错误,并且可以通过显式请求make libwiringPiStub.la来构建目标libwiringPiStub.la这一事实倾向于支持这一结论。

同时,make install成功完成,甚至没有尝试安装库或相关联的头,这强烈表明项目配置导致它们没有包含在lib_LTLIBRARIESinclude_HEADERS变量的值中。在configure时,从BUILD_WIRINGPI_STUBAutomake条件求值到false,这会很自然地消失,但我认为没有理由认为,如果条件求值为true,也会发生同样的情况。因此,我希望你能在这里找到问题所在。

您可以通过查看生成的Makefile来验证条件是否负责。无论哪种方式,条件的主体都将出现在Makefile中,但如果条件的计算结果为false,则它将被注释掉。

最新更新