RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Small. Fast. Reliable.
Choose any three.
Объединение SQLite

1. Резюме

Более чем 100 отдельных исходных файлов связаны в единственный большой файл C-кода "sqlite3.c", называемый "объединением". Объединение содержит все, что приложение должно включить для SQLite.

Объединение всего кода для SQLite в один большой файл делает SQLite легче в развертывании: есть всего один файл, чтобы отслеживать. И потому что весь код находится в единственной единице перевода, компиляторы могут сделать лучшую обработку и оптимизацию, приводящую к машинному коду, который на 5%-10% быстрее.

2. Объединение SQLite

Библиотека SQLite состоит из 111 файлов кода C (Version 3.37.0 - 2021-11-27) в ядре с 22 дополнительными файлами, которые осуществляют определенные обычно используемые расширения. Из 133 главных исходных файлов приблизительно 75% это код на C и приблизительно 25% это заголовочные файлы C. Большинство из них это "исходные" файлы в том смысле, что они сохранены в SQLite version control system и редактируются вручную в обычном текстовом редакторе. Но некоторые файлы языка C произведены, используя сценарии или вспомогательные программы. Например, файл parse.y который содержит LALR(1), грамматику языка SQL, собран Lemon parser generator, чтобы произвести анализатор, содержащийся в файле "parse.c", сопровождаемый символическими идентификаторами в "parse.h".

У make-файлов для SQLite есть цель "sqlite3.c" для сборки объединения, чтобы содержать весь код C для основной библиотеки SQLite и расширения FTS3, FTS5, RTREE, DBSTAT, JSON1, RBU и SESSION. Этот файл содержит 238K строк кода (или 145K, если вы опускаете пустые строки и комментарии) и более 8.4 мегабайтов в размере.

Хотя различные расширения включены в "sqlite3.c", они выключены, используя #ifdef. Активируйте расширения, используя варианты времени компиляции:

Объединение содержит все, что необходимо интегрировать SQLite в больший проект. Просто скопируйте объединение в свой исходный каталог и соберите его наряду с другими файлами C в вашем проекте. Более детальное обсуждение процесса компиляции доступно. Можно также хотеть использовать заголовочный файл "sqlite3.h", который определяет API для SQLite. Заголовочный файл sqlite3.h доступен отдельно. Он также содержится в рамках объединения в первых нескольких тысячах строк. Таким образом, если вы имеете копию sqlite3.c, но, может казаться, не определяете местонахождение sqlite3.h, можно всегда восстанавливать sqlite3.h, копируя из объединения.

В дополнение к созданию SQLite, который легче присоединить в другие проекты, объединение также заставляет его работать быстрее. Много компиляторов в состоянии сделать дополнительную оптимизацию на коде , когда он содержится в единственной единице трансляции. Мы измерили повышения производительности между 5 и 10%, когда мы используем объединение, чтобы собрать SQLite, а не отдельные исходные файлы. Оборотная сторона этого то, что дополнительная оптимизация часто принимает форму инлайн-функции, что имеет тенденцию делать размер получающегося образа больше.

3. Объединение разделения

Разработчики иногда испытывают проблему, отлаживая четверть миллиона строк исходного файла объединения потому, что некоторые отладчики в состоянии обращаться с числом строк исходного кода только меньше, чем 32,768. Исходный код объединения хорошо работает. Можно просто перескакивать через него в отладчике.

Чтобы обойти это ограничение, объединение также доступно в форме разделения, состоящего из файлов "sqlite3-1.c", "sqlite3-2.c" и т.д., где каждый файл меньше 32,768 строк и где связь файлов содержит весь код для полного объединения. Тогда есть отдельный исходный файл, названный "sqlite3-all.c", который в основном состоит из такого кода:

#include "sqlite3-1.c"
#include "sqlite3-2.c"
#include "sqlite3-3.c"
#include "sqlite3-4.c"
#include "sqlite3-5.c"
#include "sqlite3-6.c"
#include "sqlite3-7.c"

Приложения, используя объединение разделения просто собирают "sqlite3-all.c" вместо "sqlite3.c". Эти два файла работают точно так же. Но с "sqlite3-all.c" никакой единственный исходный файл не содержит больше 32,767 строк кода, таким образом, более удобно использовать некоторые отладчики. Оборотная сторона объединения разделения то, что оно состоит из 6 файлов исходного кода C вместо всего 1.

4. Загрузите копии предварительно собранного объединения

Объединение и заголовочный файл sqlite3.h доступны на странице загрузки как файл sqlite-amalgamation-X.zip, где X заменяется соответствующим номером версии.

5. Создание объединения из канонического исходного кода

Чтобы построить объединение (полное объединение или объединение разделения), сначала получите канонический исходный код от одного из этих трех серверов. Затем на подобных Unix системах и на системах Windows, у которых есть бесплатная установленная среда разработки MinGW, объединение может быть построено, используя следующие команды:

sh configure
make sqlite3.c

Чтобы построить через Microsoft Visual C++, выполните:

nmake /f makefile.msc sqlite3.c

В обоих случаях объединение разделения может быть получено, вписав "sqlite3-all.c" вместо "sqlite3.c" как цель сборки.

5.1. Зависимости

Процесс сборки делает широкое применение языка сценариев Tcl scripting language. У вас должна быть копия TCL, установленного для целей сборки выше. Простые в использовании инсталляторы могут быть получены из http://www.tcl-lang.org/. Многие дистрибутивы unix включают Tcl по умолчанию.

5.2. См. также

Дополнительные примечания по компилированию SQLite могут быть найдены на странице как собрать SQLite.