未安装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中,但是如果条件的值为假,则它将被注释掉。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...