构建日志:
20:10:36 make[3]: Entering directory `/home/ubuntu/build/ColossusCoinXT/distsrc-i686-pc-linux-gnu/src/minizip'
20:10:36 /bin/bash ./libtool --tag=CC --mode=compile gcc -m32 -DPACKAGE_NAME=\"minizip\" -DPACKAGE_TARNAME=\"minizip\" -DPACKAGE_VERSION=\"1.2.8\" -DPACKAGE_STRING=\"minizip\ 1.2.8\" -DPACKAGE_BUGREPORT=\"bugzilla.redhat.com\" -DPACKAGE_URL=\"\" -DPACKAGE=\"minizip\" -DVERSION=\"1.2.8\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. -I./../.. -I/home/ubuntu/build/ColossusCoinXT/depends/i686-pc-linux-gnu/share/../include/ -pipe -O2 -O2 -g -c -o ioapi.lo ioapi.c
20:10:36 libtool: compile: gcc -m32 -DPACKAGE_NAME=\"minizip\" -DPACKAGE_TARNAME=\"minizip\" -DPACKAGE_VERSION=\"1.2.8\" "-DPACKAGE_STRING=\"minizip 1.2.8\"" -DPACKAGE_BUGREPORT=\"bugzilla.redhat.com\" -DPACKAGE_URL=\"\" -DPACKAGE=\"minizip\" -DVERSION=\"1.2.8\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. -I./../.. -I/home/ubuntu/build/ColossusCoinXT/depends/i686-pc-linux-gnu/share/../include/ -pipe -O2 -O2 -g -c ioapi.c -fPIC -DPIC -o ioapi.o
20:10:36 gcc: error: 1.2.8": No such file or directory
问题在第三行:"-DPACKAGE_STRING=\"minizip 1.2.8\""
,由于空格的原因,编译器将这个定义解释为两个不同的参数。我正在寻找解决方法,最简单的方法似乎是未定义这些AC_INIT预处理器符号,但我没有找到这样做的方法。
configure.ac:
AC_INIT([minizip], [1.2.8], [bugzilla.redhat.com])
AC_CONFIG_SRCDIR([minizip.c])
AM_INIT_AUTOMAKE([no-define foreign])
LT_INIT
...
正在寻找快速解决方法,谢谢!
发布于 2018-09-07 13:50:23
现在,我使用next解决方法:
AC_CONFIG_COMMANDS([quickfix], [sed -i 's/minizip\\\ 1.2.8/minizip-1.2.8/g' Makefile])
AC_OUTPUT
如果你知道,请贴出更好的解决方案。
发布于 2018-12-05 08:12:58
当-DFOO=bar
定义列表变得太长时,让autoconf
将所有这些定义写入单个头文件(通常称为config.h
):
AC_INIT([pkg], [1.2.3], [bugs@example.com])
AC_CONFIG_HEADERS([internal/config.h])
缺点是,您现在需要在靠近顶部的所有编译单元中显式#include "config.h"
,以便以后的#ifdef
可以正常工作。
此外,请确保现在运行的是autoreconf
而不是autoconf
,因为autoreconf
将在必要时调用autoheader来维护与config.h
文件相对应的config.h.in
文件。(我几乎总是使用autoreconf -vis .
)
如果您正在编写一个库,请确保公共接口的头文件不包括您的库的config.h
文件,因为这将导致与使用config.h
的任何其他包的名称冲突!
Autoconf info文档的主题:Configuration Header Files
发布于 2022-01-10 06:53:43
看看您的构建输出:
在
-DPACKAGE_STRING=\"minizip\ 1.2.8\"
,这是在shell上传递包含空格字符的参数的好方法。"-DPACKAGE_STRING=\"minizip 1.2.8\""
,这是在命令行上传递包含空格字符的参数的另一种好方法。目前还没有发现任何错误。
但是,gcc
打印的错误消息表明,最终调用的gcc
命令实际上与libtool
打印为该命令的命令不同。
这就留下了两种可能性:
libtool
脚本已经损坏,并且以与打印方式不同的方式调用gcc
。您可以尝试运行make distclean
,然后重新运行autoreconf
和configure
,从头开始重新构建迷你构建系统,其中包括libtool
脚本。libtool
脚本正确调用gcc
命令,但gcc
命令是实际的gcc的包装器,该包装器不正确地将其参数传递给实际的gcc
,从而阻塞了不正确的参数。包装gcc
的软件包的一个例子是ccache
,但还有其他的。检查此问题的一种方法是在shell中运行which gcc
,然后分析结果:它属于哪个包,是否使用替代方案重定向,等等。可能有此软件的更新版本修复了报价错误。
minizip源码树本身很好(在Debian 10上测试过):
[user@host ~]$ git clone https://github.com/madler/zlib.git
[…]
[user@host ~]$ cd zlib/contrib/minizip
[user@host minizip]$ git checkout -b minizip-1.2.8 v1.2.8
[…]
[user@host minizip]$ autoreconf -vis .
[…]
[user@host minizip]$ ./configure --prefix=$PWD/_i
[…]
[user@host minizip]$ make
/bin/bash ./libtool --tag=CC --mode=compile gcc -DPACKAGE_NAME=\"minizip\" -DPACKAGE_TARNAME=\"minizip\" -DPACKAGE_VERSION=\"1.2.8\" -DPACKAGE_STRING=\"minizip\ 1.2.8\" -DPACKAGE_BUGREPORT=\"bugzilla.redhat.com\" -DPACKAGE_URL=\"\" -DPACKAGE=\"minizip\" -DVERSION=\"1.2.8\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. -I./../.. -g -O2 -MT ioapi.lo -MD -MP -MF .deps/ioapi.Tpo -c -o ioapi.lo ioapi.c
libtool: compile: gcc -DPACKAGE_NAME=\"minizip\" -DPACKAGE_TARNAME=\"minizip\" -DPACKAGE_VERSION=\"1.2.8\" "-DPACKAGE_STRING=\"minizip 1.2.8\"" -DPACKAGE_BUGREPORT=\"bugzilla.redhat.com\" -DPACKAGE_URL=\"\" -DPACKAGE=\"minizip\" -DVERSION=\"1.2.8\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. -I./../.. -g -O2 -MT ioapi.lo -MD -MP -MF .deps/ioapi.Tpo -c ioapi.c -fPIC -DPIC -o .libs/ioapi.o
libtool: compile: gcc -DPACKAGE_NAME=\"minizip\" -DPACKAGE_TARNAME=\"minizip\" -DPACKAGE_VERSION=\"1.2.8\" "-DPACKAGE_STRING=\"minizip 1.2.8\"" -DPACKAGE_BUGREPORT=\"bugzilla.redhat.com\" -DPACKAGE_URL=\"\" -DPACKAGE=\"minizip\" -DVERSION=\"1.2.8\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. -I./../.. -g -O2 -MT ioapi.lo -MD -MP -MF .deps/ioapi.Tpo -c ioapi.c -o ioapi.o >/dev/null 2>&1
mv -f .deps/ioapi.Tpo .deps/ioapi.Plo
[…]
libtool: link: gcc -shared -fPIC -DPIC .libs/ioapi.o .libs/mztools.o .libs/unzip.o .libs/zip.o -L./../.. -lz -g -O2 -Wl,-soname -Wl,libminizip.so.1 -o .libs/libminizip.so.1.0.0
libtool: link: (cd ".libs" && rm -f "libminizip.so.1" && ln -s "libminizip.so.1.0.0" "libminizip.so.1")
libtool: link: (cd ".libs" && rm -f "libminizip.so" && ln -s "libminizip.so.1.0.0" "libminizip.so")
libtool: link: ar cru .libs/libminizip.a ioapi.o mztools.o unzip.o zip.o
ar: `u' modifier ignored since `D' is the default (see `U')
libtool: link: ranlib .libs/libminizip.a
libtool: link: ( cd ".libs" && rm -f "libminizip.la" && ln -s "../libminizip.la" "libminizip.la" )
[user@host minizip]$ _
https://stackoverflow.com/questions/52192019
复制相似问题