|
[MANUAL] Сборка SQLCipher под MSVC 2008
|
|||
---|---|---|---|
#18+
Решил поделиться инструкцией по сборке 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.
Сразу отмечу, что будем собирать проекты с такими параметрами (см. ниже редактирование файла config.h): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Т.е. используются наиболее оптимальные значения для однопоточных приложений. Если ваше приложение использует 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 МБ. Вроде бы всё. Если кому то помог, ставьте лайк )) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2012, 15:00 |
|
|
start [/forum/topic.php?fid=54&fpage=18&tid=2009017]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
31ms |
get tp. blocked users: |
2ms |
others: | 266ms |
total: | 375ms |
0 / 0 |