Объектные файлы SQLite для линкуса?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
MaratIsk
постоялец
Сообщения: 126
Зарегистрирован: 20.08.2009 18:15:20

Объектные файлы SQLite для линкуса?

Сообщение MaratIsk »

для компиляции в исполняемый файл приложения
Аватара пользователя
WAYFARER
энтузиаст
Сообщения: 567
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Сообщение WAYFARER »

Есть ли в этом смысл? Как правило SQLite в 99% случаем уже включен в дистрибутив, т.к. используется множеством приложений для хранения данных и настроек. В ином же случае добавить к пакету вашего приложения sqlite в зависимости.
MaratIsk
постоялец
Сообщения: 126
Зарегистрирован: 20.08.2009 18:15:20

Сообщение MaratIsk »

иногда не включен
вот и не хочется от этого зависеть
Аватара пользователя
WAYFARER
энтузиаст
Сообщения: 567
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Сообщение WAYFARER »

Исходники Sqlite можно взять на http://www.sqlite.org/download.html.
Если вам даже удастся статически прилинковать sqlite, то компоненты, которые вы используете для работы с sqlite работать не будут. Вам придется изучить документацию по sqlite и её API. Так же нужно будет учесть все зависимости sqlite, так же нужно будет учесть все зависимости библиотек от которых зависит sqlite..и т.д.

Это linux, здесь так не делается.
MaratIsk
постоялец
Сообщения: 126
Зарегистрирован: 20.08.2009 18:15:20

Сообщение MaratIsk »

вот как это выглядит для windows
полагаю сделать также для линукс возможно
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
WAYFARER
энтузиаст
Сообщения: 567
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Сообщение WAYFARER »

Я не говорю, что это невозможно.
Пошаговая инструкция:
Открываем терминал

Код: Выделить всё

$ 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 прилинкована.
MaratIsk
постоялец
Сообщения: 126
Зарегистрирован: 20.08.2009 18:15:20

Сообщение MaratIsk »

:cry:

Параметры были изменены, перекомпиляция с очисткой (ключ -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, так Вам об этом и говорили. Компилятор просто не понял что ему подсунули. Имхо, нужен модуль-обертка.
MaratIsk
постоялец
Сообщения: 126
Зарегистрирован: 20.08.2009 18:15:20

Сообщение MaratIsk »

причем тут модуль обертка???
просто не хватает каких-то библиотек
вот каких?!

вот как это сделано у меня в винде

{$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 (редкое гуано, на мой взгляд, в смысле ос)

бесполезная работа. Проще действительно добавить его в зависимости программы. Интернет для обновления/установки проги всегда можно найти.

(странно, а мой друг переодически ставит это гуано, чтобы отдохнуть от глюков и тормозов винды. При том, что он геймер.)
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Для спаравки: гуано - это именно то, что делает почву ценной и плодородной. ;-)
MaratIsk
постоялец
Сообщения: 126
Зарегистрирован: 20.08.2009 18:15:20

Сообщение MaratIsk »

угу
он же не зарабатывает свой хлеб программированием

Добавлено спустя 1 минуту 58 секунд:
Vadim писал(а):Для спаравки: гуано - это именно то, что делает почву ценной и плодородной. ;-)


словоблудие для программиста
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

MaratIsk писал(а):он же не зарабатывает свой хлеб программированием

MaratIsk писал(а):он же не зарабатывает свой хлеб программированием


угу... ад программиста под виндой -- недокументированные функции.
MaratIsk
постоялец
Сообщения: 126
Зарегистрирован: 20.08.2009 18:15:20

Сообщение MaratIsk »

поскольку заявленная тема не про ОС не буду продолжать

Добавлено спустя 10 минут:
Лекс Айрин писал(а):
MaratIsk писал(а):он же не зарабатывает свой хлеб программированием

MaratIsk писал(а):он же не зарабатывает свой хлеб программированием


угу... ад программиста под виндой -- недокументированные функции.


а ты документированные изучил???
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

MaratIsk писал(а):поскольку заявленная тема не про ОС не буду продолжать

MaratIsk писал(а):а ты документированные изучил???


??
Ответить