powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / [MANUAL] Сборка SQLCipher под MSVC 2008
1 сообщений из 1, страница 1 из 1
[MANUAL] Сборка SQLCipher под MSVC 2008
    #37855147
metos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил поделиться инструкцией по сборке SQLCipher под MSVC 2008.

Для этого будем использовать самый лёгкий путь: будем сначала собирать под MinGW, а затем уже под MSVC.
В описании буду использовать абсолютные имена директорий (мне и вам будет проще).

1) Устанавливаем MinGW ( в директорию d:\MinGW\ )
2) Скачиваем и устанавливаем MSYS. В конце установки будет задано несколько вопросов, соглашаемся с ними и указываем путь до MinGW.
3) Скачиваем и устанавливаем Win32 OpenSSL ( в директорию d:\OpenSSL\ ) с либами под MSVC 2008.
4) Скачиваем и устанавливаем TclTk ( http://downloads.sourceforge.net/mingw/tcltk-8.4.1-1.exe ). Во время установки указываем путь до MinGW. Находим файл d:\MinGW\bin\ tclsh84.exe и переименовываем его в tclsh.exe .

После инсталляции необходимо отредактировать файл d:\MinGW\msys\1.0\etc\fstab :
Код: sql
1.
2.
3.
d:/MinGW/   /mingw
d:/         /d
c:/         /c



Сразу отмечу, что будем собирать проекты с такими параметрами (см. ниже редактирование файла config.h):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
#define SQLITE_ENABLE_STAT3
#define SQLITE_DEFAULT_RECURSIVE_TRIGGERS  0
#define SQLITE_DEFAULT_FILE_FORMAT         4
#define SQLITE_DEFAULT_PAGE_SIZE           8192
#define SQLITE_DEFAULT_CACHE_SIZE          8000
#define SQLITE_DEFAULT_TEMP_CACHE_SIZE     2000
#define SQLITE_TEMP_STORE                  2
#define SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT  1048576
#define SQLITE_THREADSAFE                  0
#define SQLITE_DEFAULT_LOCKING_MODE        1
#define SQLITE_ENABLE_LOAD_EXTENSION       1 


Т.е. используются наиболее оптимальные значения для однопоточных приложений. Если ваше приложение использует SQLite API в нескольких потоках, то определения SQLITE_THREADSAFE и SQLITE_DEFAULT_LOCKING_MODE следует убрать.

Сборка sqlcipher под MinGW :
1) копируем исходники sqlcipher в директорию "d:\dev\sqlcipher\orig"
2) запускаем MSYS ( d:\MinGW\msys\1.0\msys.bat )
3) выполняем следующие действия (обязательно учитываем регистр при написании):
$ cd /d/dev/sqlcipher/orig
$ ./configure --disable-tcl --disable-amalgamation CFLAGS="-DSQLITE_ENABLE_STAT3 -DSQLITE_DEFAULT_RECURSIVE_TRIGGERS=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_DEFAULT_PAGE_SIZE=8192 -DSQLITE_DEFAULT_CACHE_SIZE=8000 -DSQLITE_DEFAULT_TEMP_CACHE_SIZE=2000 -DSQLITE_TEMP_STORE=2 -DSQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_LOCKING_MODE=1 -DSQLITE_ENABLE_LOAD_EXTENSION=1 -DSQLITE_HAS_CODEC -I/d/OpenSSL/include /d/openssl/libeay32.dll -L/d/OpenSSL/lib/MinGW"
$ make
$ make dll


После данных команд в директории "d:\dev\sqlcipher\orig" должны появиться файлы sqlite3.dll и sqlite3.def.
Полученная DLL имеет зависимости от LIBEAY32.DLL и MSVCRT.DLL , но зато её размер не велик (600 КБ).

Сборка sqlcipher под MSVC :
1) из директории "d:\dev\sqlcipher\orig\src" копируем все файлы в директорию "d:\dev\sqlcipher\msvc"
2) из директории "d:\dev\sqlcipher\orig" копируем несколько файлов в директорию "d:\dev\sqlcipher\msvc"
sqlite3.h
opcodes.h
opcodes.c
parse.h
parse.c
keywordhash.h
sqlite3.def
3) в файл "d:\dev\sqlcipher\msvc\pragma.c" нужно добавить #include "crypto.h" (видимо забыли разрабы).
4) в файл "d:\dev\sqlcipher\msvc\config.h" добавляем параметры, которые были указаны выше.
5) в файле "d:\dev\sqlcipher\msvc\sqlite3.def" нужно удалить строчки с префиксом "sqlite3_mutex_", т.к. задавая параметр THREADSAFE=0 мы отключили использование объектов синхронизации.
6) из вложения достаём файлики sqlcipher.sln и sqlcipher.vcproj и копируем их в директорию "d:\dev\sqlcipher\msvc".
7) открываем sqlcipher.sln , проверяем в свойствах проекта пути к либам и т.п.
8) собираем проект (либо DLL, либо EXE).

Полученная DLL не имеет зависимостей от LIBEAY32.DLL и MSVCRT.DLL (все функции необходимые ф-ии интегрированы в модуль). Но появились зависимости от USER32.DLL и ADVAPI32.DLL (этого требует использование стандартного CRT). Размер DLL примерно 1 МБ.

Вроде бы всё.
Если кому то помог, ставьте лайк ))
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / [MANUAL] Сборка SQLCipher под MSVC 2008
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]