Объектные файлы SQLite для линкуса?
Модератор: Модераторы
Объектные файлы SQLite для линкуса?
для компиляции в исполняемый файл приложения
Есть ли в этом смысл? Как правило SQLite в 99% случаем уже включен в дистрибутив, т.к. используется множеством приложений для хранения данных и настроек. В ином же случае добавить к пакету вашего приложения sqlite в зависимости.
иногда не включен
вот и не хочется от этого зависеть
вот и не хочется от этого зависеть
Исходники Sqlite можно взять на http://www.sqlite.org/download.html.
Если вам даже удастся статически прилинковать sqlite, то компоненты, которые вы используете для работы с sqlite работать не будут. Вам придется изучить документацию по sqlite и её API. Так же нужно будет учесть все зависимости sqlite, так же нужно будет учесть все зависимости библиотек от которых зависит sqlite..и т.д.
Это linux, здесь так не делается.
Если вам даже удастся статически прилинковать sqlite, то компоненты, которые вы используете для работы с sqlite работать не будут. Вам придется изучить документацию по sqlite и её API. Так же нужно будет учесть все зависимости sqlite, так же нужно будет учесть все зависимости библиотек от которых зависит sqlite..и т.д.
Это linux, здесь так не делается.
вот как это выглядит для windows
полагаю сделать также для линукс возможно
полагаю сделать также для линукс возможно
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Я не говорю, что это невозможно.
Пошаговая инструкция:
Открываем терминал
Получаем sqlite3.o, который кладем в папку с проектом, например.
В начале модуля добавить
Скомпилировать проект.
sqlite прилинкована.
Пошаговая инструкция:
Открываем терминал
Код: Выделить всё
$ wget http://www.sqlite.org/2013/sqlite-autoconf-3071700.tar.gz
$ tar xvzf sqlite-autoconf-3071700.tar.gz
$ cd sqlite-autoconf-3071700
$ ./configure -enable-static
$ makeПолучаем sqlite3.o, который кладем в папку с проектом, например.
В начале модуля добавить
Код: Выделить всё
{$l sqlite3.o} Скомпилировать проект.
sqlite прилинкована.
Параметры были изменены, перекомпиляция с очисткой (ключ -B)
/usr/bin/ld: warning: link.res contains output sections; did you forget -T?
sqlite3.obj: In function `sqlite3AtoF':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:21734: undefined reference to `__moddi3'
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:21734: undefined reference to `__divdi3'
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:21734: undefined reference to `__moddi3'
sqlite3.obj: In function `pagerPagecount':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:42266: undefined reference to `__divdi3'
sqlite3.obj: In function `memjrnlRead':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:74841: undefined reference to `__moddi3'
sqlite3.obj: In function `numberOfCachePages':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:37016: undefined reference to `__divdi3'
sqlite3.obj: In function `computeYMD':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:14494: undefined reference to `__divdi3'
sqlite3.obj: In function `computeHMS':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:14516: undefined reference to `__moddi3'
sqlite3.obj: In function `fileWriterInit':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:74081: undefined reference to `__moddi3'
sqlite3.obj: In function `numberOfCachePages':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:37016: undefined reference to `__divdi3'
sqlite3.obj: In function `sqlite3PagerSetPagesize':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:42735: undefined reference to `__divdi3'
sqlite3.obj: In function `localtimeOffset':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:14648: undefined reference to `__divdi3'
sqlite3.obj: In function `vdbeSorterIterRead':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:73640: undefined reference to `__moddi3'
sqlite3.obj: In function `vdbeSorterIterVarint':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:73716: undefined reference to `__moddi3'
sqlite3.obj: In function `sqlite3VXPrintf':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:20116: undefined reference to `__umoddi3'
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:20117: undefined reference to `__udivdi3'
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:20103: undefined reference to `__umoddi3'
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:20104: undefined reference to `__udivdi3'
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:20104: undefined reference to `__umoddi3'
sqlite3.obj: In function `unixTruncate':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:26909: undefined reference to `__divdi3'
sqlite3.obj: In function `parseModifier':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:14728: undefined reference to `__divdi3'
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:14762: undefined reference to `__divdi3'
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:14762: undefined reference to `__moddi3'
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:14830: undefined reference to `__divdi3'
sqlite3.obj: In function `strftimeFunc':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:15144: undefined reference to `__divdi3'
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:15144: undefined reference to `__moddi3'
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:15138: undefined reference to `__divdi3'
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:15117: undefined reference to `__divdi3'
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:15120: undefined reference to `__divdi3'
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:15120: undefined reference to `__moddi3'
sqlite3.obj: In function `statGet':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:82476: undefined reference to `__udivdi3'
sqlite3.obj: In function `memjrnlWrite':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:74877: undefined reference to `__moddi3'
sqlite3.obj: In function `rtreeBestIndex':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:142564: undefined reference to `__divdi3'
sqlite3.obj: In function `journalHdrOffset':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:40398: undefined reference to `__divdi3'
sqlite3.obj: In function `backupOnePage':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:59154: undefined reference to `__divdi3'
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:59161: undefined reference to `__moddi3'
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:59159: undefined reference to `__moddi3'
sqlite3.obj: In function `sqlite3WalFrames':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:49129: undefined reference to `__divdi3'
sqlite3.obj: In function `journalHdrOffset':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:40398: undefined reference to `__divdi3'
sqlite3.obj: In function `pager_playback':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:41854: undefined reference to `__divdi3'
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:41835: undefined reference to `__divdi3'
sqlite3.obj: In function `pagerPlaybackSavepoint':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:42442: undefined reference to `__divdi3'
sqlite3.obj:/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:40398: more undefined references to `__divdi3' follow
sqlite3.obj: In function `vdbeSorterIterInit':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:73793: undefined reference to `__moddi3'
sqlite3.obj: In function `sqlite3VdbeExec':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:67951: undefined reference to `__moddi3'
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:67925: undefined reference to `__moddi3'
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:67920: undefined reference to `__divdi3'
sqlite3.obj: In function `fts3MatchinfoValues':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:139879: undefined reference to `__divdi3'
sqlite3.obj: In function `fts3EvalAverageDocsize':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:128216: undefined reference to `__divdi3'
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:128216: undefined reference to `__divdi3'
sqlite3.obj: In function `sqlite3Fts3Incrmerge':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:138019: undefined reference to `__moddi3'
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:138019: undefined reference to `__moddi3'
sqlite3.obj: In function `fcntlSizeHint':
/home/maratisk/Apps/sqlite-autoconf-3080200/sqlite3.c:26992: undefined reference to `__divdi3'
project1.lpr(20,1) Error: Error while linking
project1.lpr(20,1) Fatal: There were 1 errors compiling module, stopping
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
MaratIsk, так Вам об этом и говорили. Компилятор просто не понял что ему подсунули. Имхо, нужен модуль-обертка.
причем тут модуль обертка???
просто не хватает каких-то библиотек
вот каких?!
вот как это сделано у меня в винде
{$l libsqlite3.a}
{$linklib libkernel32.a}
{$linklib libmsvcrt.a}
{$linklib libgcc.a}
Добавлено спустя 3 часа 37 минут 34 секунды:
нашел
тоже следовало прилинковать libgcc.a
Добавлено спустя 1 час 33 минуты 15 секунд:
собственно цель состояла в том, чтобы сделать приложение не зависящее от наличия/отсутствия sqlite в linux (редкое гуано, на мой взгляд, в смысле ос)
просто не хватает каких-то библиотек
вот каких?!
вот как это сделано у меня в винде
{$l libsqlite3.a}
{$linklib libkernel32.a}
{$linklib libmsvcrt.a}
{$linklib libgcc.a}
Добавлено спустя 3 часа 37 минут 34 секунды:
нашел
тоже следовало прилинковать libgcc.a
Добавлено спустя 1 час 33 минуты 15 секунд:
собственно цель состояла в том, чтобы сделать приложение не зависящее от наличия/отсутствия sqlite в linux (редкое гуано, на мой взгляд, в смысле ос)
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
MaratIsk писал(а):собственно цель состояла в том, чтобы сделать приложение не зависящее от наличия/отсутствия sqlite в linux (редкое гуано, на мой взгляд, в смысле ос)
бесполезная работа. Проще действительно добавить его в зависимости программы. Интернет для обновления/установки проги всегда можно найти.
(странно, а мой друг переодически ставит это гуано, чтобы отдохнуть от глюков и тормозов винды. При том, что он геймер.)
Для спаравки: гуано - это именно то, что делает почву ценной и плодородной. 
угу
он же не зарабатывает свой хлеб программированием
Добавлено спустя 1 минуту 58 секунд:
словоблудие для программиста
он же не зарабатывает свой хлеб программированием
Добавлено спустя 1 минуту 58 секунд:
Vadim писал(а):Для спаравки: гуано - это именно то, что делает почву ценной и плодородной.
словоблудие для программиста
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
MaratIsk писал(а):он же не зарабатывает свой хлеб программированием
MaratIsk писал(а):он же не зарабатывает свой хлеб программированием
угу... ад программиста под виндой -- недокументированные функции.
поскольку заявленная тема не про ОС не буду продолжать
Добавлено спустя 10 минут:
а ты документированные изучил???
Добавлено спустя 10 минут:
Лекс Айрин писал(а):MaratIsk писал(а):он же не зарабатывает свой хлеб программированиемMaratIsk писал(а):он же не зарабатывает свой хлеб программированием
угу... ад программиста под виндой -- недокументированные функции.
а ты документированные изучил???
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
MaratIsk писал(а):поскольку заявленная тема не про ОС не буду продолжать
MaratIsk писал(а):а ты документированные изучил???
??
