在MinGW中编译SQLite3
问题描述:
我想在MinGW中构建SQLite3。我下载的源码,autoconf的3071000.tar.gz,其解压缩,然后键入以下命令:在MinGW中编译SQLite3
./configure --prefix=/mingw
make && make install
当我尽量做到,错误报告:
$ make && make install
C:/MinGW/msys/1.0/bin/sh.exe ./libtool --tag=CC --mode=compile gcc
-DPACKAGE_NAME=\"sqlite\" -DPACKAGE_TARNAME=\"sqlite\" -DPACKAGE_VERSION=\"3.7.10\"
-DPACKAGE_STRING=\"sqlite\ 3.7.10\" -DPACKAGE_BUGREPORT=\"http://www.sqlite.org\"
-DPACKAGE_URL=\"\" -DPACKAGE=\"sqlite\" -DVERSION=\"3.7.10\" -DSTDC_HEADERS=1 -DHAVE_
SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEM
ORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H
=1 -DHAVE_USLEEP=1 -DHAVE_DECL_STRERROR_R=0 [email protected][email protected] -D_REENTRANT=1 -DSQ
LITE_THREADSAFE=1 -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_RTREE -g -O2 -MT sqlite3
.lo -MD -MP -MF .deps/sqlite3.Tpo -c -o sqlite3.lo sqlite3.c
Xsqlite3.Tpo -c -o sqlite3.lo sqlite3.lo
libtool: compile: libobj name `sqlite3.Tpo -c -o sqlite3.lo sqlite3.lo' may not
contain shell special characters.
rm: invalid option -- c
Try `rm --help' for more information.
mkdir .libs
gcc "-DPACKAGE_NAME=\\sqlite\" -DPACKAGE_TARNAME=\"sqlite\" -DPACKAGE_VERSION=\
"3.7.10\" -DPACKAGE_STRING=\\sqlite 3.7.10\"" "-DPACKAGE_BUGREPORT=\\http://www.
sqlite.org\" -DPACKAGE_URL=\"\" -DPACKAGE=\"sqlite\" -DVERSION=\"3.7.10\" -DSTDC
_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STR
ING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H
=1 -DHAVE_UNISTD_H=1 -DHAVE_USLEEP=1 -DHAVE_DECL_STRERROR_R=0 [email protected][email protected] -D_R
EENTRANT=1 -DSQLITE_THREADSAFE=1 -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_RTREE -g -
O2 -MT sqlite3.lo -MD -MP -MF .deps/sqlite3.Tpo -c -o sqlite3.lo sqlite3.c" -DD
LL_EXPORT -DPIC -o .libs/sqlite3.Tpo -c -o sqlite3.lo sqlite3.o
gcc.exe: error: sqlite3.o: No such file or directory
gcc.exe: fatal error: no input files
compilation terminated.
make: *** [sqlite3.lo] Error 1
谁能帮我它?非常感谢!
答
这是MinGW/autotools/automake/etc中的一个奇怪的错误,我不知道在哪里。
如果您列出当前工作目录中的所有文件(或构建目录或甚至在所有源代码树中,IIRC),则会找到一个名为'sqlite3.Tpo -c -o sqlite3.lo sqlite3.lo' 。这个名字类似于一些命令的参数列表!所以我猜想问题在于Makefile中命令的错误处理过程(转义丢失甚至错字)。
正如我们所见,libtool和gcc抱怨非法文件的名称或缺少文件。
幸运的是我能与此变通
$使-n> cmds.sh & & SH cmds.sh
希望这有助于successfuly建立sqlite的。
答
同样的问题被报告与其他库,如MPFR,其中一个得到:
libtool: warning: libobj name 'extract.Tpo -c -o extract.lo extract.lo' may not contain shell special characters.
rm: unknown option -- c
根据在(无效)讨论MSYS2 bug 223:
所有警告和错误有在从MinGW-W64中删除'make'并为MSYS2安装'make'后(使用GMP,MPFR和OpenSSL进行了测试)后。
因此,这应该解决这里的问题。