未安装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)中安装任何文件,或者是头目录中的头文件

这是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文件在位置上移动。

有什么主意吗?

提前

tnx!

解决方法

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

与此同时,make install成功完成甚至没有尝试安装库或相关头文件的事实强烈表明,项目配置导致它们未包含在lib_LTLIBRARIES的值中和include_HEADERS变量。从BUILD_WIRINGPI_STUB的{​​{1}} Automake条件评估中自然得出的结果是configure,但是我认为没有理由认为如果条件评估为true也会发生同样的情况。因此,这就是我希望您找到问题的地方。

您可以通过查看生成的Makefile来验证条件的责任。条件的主体将以任何一种方式出现在Makefile中,但是如果条件的值为假,则它将被注释掉。