在 MinGW 中编译 SQLite3

发布于 2025-01-06 14:33:16 字数 2061 浏览 1 评论 0原文

我正在尝试在 MinGW 中构建 SQLite3。我下载了 sqlite-autoconf-3071000.tar.gz,解压它并输入以下命令:

./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 -I.@am__isrc@    -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 -I.@am__isrc@ -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

任何人都可以帮助我吗?非常感谢!

I am trying to build SQLite3 in MinGW. I downloaded the sqlite-autoconf-3071000.tar.gz, untar it and type the following command:

./configure --prefix=/mingw
make && make install

When I try to make it, errors reported:

$ 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 -I.@am__isrc@    -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 -I.@am__isrc@ -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

Can anyone help me with it? Many thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

浅唱ヾ落雨殇 2025-01-13 14:33:17

这些说明有效为我。我正在使用 mingw 编译的 sqlite3 运行我的 Rails 应用程序。

These instructions worked for me. I am running my rails application using sqlite3 compiled using mingw.

梨涡少年 2025-01-13 14:33:17

其他库也报告了同样的问题,例如 MPFR,其中有人得到:

libtool: warning: libobj name 'extract.Tpo -c -o extract.lo extract.lo' may not contain shell special characters.
rm: unknown option -- c

根据(无效)MSYS2 错误 223

从 MinGW-W64 中删除“make”并为 MSYS2 安装“make”(使用 GMP、MPFR 和 OpenSSL 进行测试)后,所有警告和错误都消失了。

所以,这应该可以解决这里的问题。

The same problem was reported with other libraries, such as MPFR, where one gets:

libtool: warning: libobj name 'extract.Tpo -c -o extract.lo extract.lo' may not contain shell special characters.
rm: unknown option -- c

According to the discussion in the (invalid) MSYS2 bug 223:

All warnings and errors have gone after removing 'make' from MinGW-W64 and instaling 'make' for MSYS2 (tested with GMP, MPFR and OpenSSL).

So, this should solve the problem here.

羅雙樹 2025-01-13 14:33:16

这是 MinGW/autotools/automake/etc 中的一个奇怪的错误,我不知道具体在哪里。

如果列出当前工作目录(或构建目录,甚至所有源代码树,IIRC)中的所有文件,那么您将找到一个名为“sqlite3.Tpo -c -o sqlite3.lo sqlite3.lo”的文件。该名称类似于某些命令的参数列表!所以我猜测问题出在Makefile中某个命令的处理错误(转义缺失甚至打印错误)。

正如我们所看到的,libtool 和 gcc 抱怨文件名非法或文件丢失。

幸运的是,我能够使用此解决方法成功构建 sqlite

$ make -n > cmds.sh && sh cmds.sh

希望这有帮助。

It's a strange bug in MinGW/autotools/automake/etc, I dunno exactly where.

If you lists all files in the current working directory (or build directory or even in all source tree, IIRC) then you'll find a file named 'sqlite3.Tpo -c -o sqlite3.lo sqlite3.lo'. The name is similiar to arguments list for a some command! So I guess that the problem lies in the wrong process of a commands in Makefile (escaping is missing or even misprint).

As we can see libtool and gcc complains about illegal file's name or missing file.

Fortunately I was able to build sqlite successfuly with this workaround

$ make -n > cmds.sh && sh cmds.sh

Hope this helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文