Компиляция SQLite3 в MinGW - PullRequest
       10

Компиляция SQLite3 в MinGW

5 голосов
/ 17 февраля 2012

Я пытаюсь собрать SQLite3 в MinGW. Я скачал 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

Может ли кто-нибудь помочь мне с этим? Большое спасибо!

Ответы [ 3 ]

3 голосов
/ 17 ноября 2013

Это странная ошибка в MinGW / autotools / automake / etc, я точно не знаю, где.

Если вы перечислите все файлы в текущем рабочем каталоге (или в каталоге компоновки, или даже во всем дереве исходных кодов, IIRC), то вы найдете файл с именем 'sqlite3.Tpo -c -o sqlite3.lo sqlite3.lo'. Имя похоже на список аргументов для некоторой команды! Поэтому я предполагаю, что проблема заключается в неправильном процессе выполнения команд в Makefile (экранирование отсутствует или даже опечатка).

Как мы видим, libtool и gcc жалуются на неправильное имя файла или отсутствующий файл.

К счастью, я смог успешно построить sqlite с помощью этого обходного пути

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

Надеюсь, это поможет.

1 голос
/ 15 июля 2012

Эти инструкции работали для меня.Я запускаю приложение rails, используя sqlite3, скомпилированный с помощью mingw.

0 голосов
/ 10 ноября 2016

Об этой же проблеме сообщалось и в других библиотеках, таких как 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 :

Все предупреждения и ошибки исчезли после удаления «make» из MinGW-W64 и установки «make» для MSYS2 (протестировано с GMP, MPFR и OpenSSL).

Итак,это должно решить проблему здесь.

...