Скомпилируйте SQLite с SQLCipher на Windows - PullRequest
3 голосов
/ 04 декабря 2010

Я следую этому учебнику по компиляции SQLite с SQLCipher для Windows.Я запутался по поводу предпосылок для компиляции.Я обнаружил, что мне нужно установить следующее для его компиляции:

  1. OpenSSL
  2. MinGW
  3. ActiveState Perl
  4. TclTk / tclsh
  5. MSYS
  6. Visual Studio
  7. Cygwin

Среди всего вышеперечисленного у меня только что установлена ​​Visual Studio 2008.Я работаю на Windows 7.

Каковы точные предварительные условия для компиляции SQLite с SQLCipher на Windows?

Ответы [ 2 ]

4 голосов
/ 09 декабря 2010

Минимальная настройка, необходимая для компиляции SQLCipher в Windows:

  1. OpenSSL, либо в исходном, либо в двоичном виде
  2. формы Perl - необязательно, требуется только при сборке OpenSSL
  3. MinGW / MSYS - требуется для настройки SQLCipher
  4. Tcl - требуется для системы сборки SQLite для создания кода объединения
  5. Visual Studio - для создания проекта

Используя шаги в потоке, вы можете напрямую создавать библиотеки DLL или создавать объединение для включения в ваш проект.

Если вы хотите сэкономить все эти шаги и время, за небольшую плату вы также можете получить предварительно скомпилированные двоичные файлы Windows SQLCipher с веб-сайта http://sqlcipher.net/downloads. Эти двоичные продажи взаимовыгодны, поскольку они могут помочь вамначать работать быстрее, и они помогут поддержать проект.

4 голосов
/ 04 декабря 2010

Похоже, что SQLCipher распространяется как извлечение исходных текстов SQLite + изменений, судя по быстрому взгляду - и это скорее многофайловая версия, а не "объединение". Таким образом, вам нужна среда, способная создавать источники SQLite, что означает набор приложений Unixy.

Лично я бы сделал различие между исходными архивами SQLCipher и включенной в него версией SQLite (которая, кажется, SQLite 3.7.2 для SQLCipher 1.8.2, судя по файлу VERSION) - это должно дать представление о том, что внесены изменения, если таковые имеются, в исходные файлы SQLite, а также в список файлов, относящихся к SQLCipher.

Чтобы избежать проблем с созданием OpenSSL вручную, вы можете получить готовые версии, которые избавят вас от зависимостей Perl (iirc OpenSSL прекрасно работает с Visual C ++, поэтому MingW не должен быть зависимостью).

Если автор SQLCipher преднамеренно не сделал работу по отделению его отдельных частей кода от хитрого SQLite (который он мог бы получить, чтобы заработать немного денег от продажи двоичных файлов win32), вы были бы возможность принимать его изменения и комбинировать его с версией слияния SQLite и предварительно скомпилированными двоичными файлами OpenSSL, что должно обеспечить действительно простое внедрение в решение Visual Studio.

Конечно, это означает, что вам придется пройти этап извлечения, если вы хотите перейти на более новую версию SQLCipher, но это, вероятно, того стоит, если вы действительно не хотите устанавливать среду разработки cygwin просто для быть в состоянии построить эту единственную библиотеку.

В качестве альтернативы вы можете выполнить шаг configure SQLCipher для * u * x box (будь то linux, * BSD или оболочка Mac OS X), поскольку * compile step не должен требовать все прикольные инструменты.

UPDATE:

Я проверил (версия 3.7.2) [http://www.sqlite.org/src/info/42537b6056] SQLite и провел сравнение с дистрибутивом SQLCipher 1.1.8, и кажется довольно разумной задачей извлечь измененные части:

Makefile.in - references added for the new crypto files.
tool/mksqlite3c.tcl: references added for the new crypto files.
src/pragma.c - one added block, marked /** BEGIN_CRYPTO **/
src/pager.c - one added block, marked /** BEGIN_CRYPTO **/
src/crypto.h - new file.
src/crypto.c - new file.

Кроме того, кажется довольно излишним использовать зависимость от OpenSSL только для того, чтобы получить поддержку шифрования AES - создание чего-то нового на основе SQLCipher для использования выделенного (и гораздо меньшего) пакета AES было бы лучше.

...