问题描述
也许我不了解某些真正基本的东西,但是我面临着一个非常奇怪的行为:在正确构建我的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中,但是如果条件的值为假,则它将被注释掉。