Привет, пишу, потому, что в этой области знаю очень мало.
Есть программа (база данных) + библиотека libsqlite3.so + Lazarus+ Linux
Слышал, что библиотеку и программу можно связать в один исполняемый файл, но как это сделать в гугле ничего путного.
Попадаются примеры статической линковки отдельных функций, но это не то.
Мне нужен исполняемый файл, который ни в чем не нуждается при работе с базой sqlite. Проще говоря "экзешник" и сама база .
И вообще возможно ли это ?
Статическое связывание или программа с библиотекой в одном
Модератор: Модераторы
Вам нужно связывать код не с библиотекой *.so, а со статической библиотекой *.a (которую надо ещё найти), в этом случае получится один исполняемый файл.
Хорошо, а как связать либу с исполняемым файлом, какие опции должны быть в Lazarus ?
http://www.freepascal.ru/forum/viewtopic.php?f=13&t=6536&st=0&sk=t&sd=a
ps Lazarus ни как не относится к данной теме. Lazarus - IDE+LCL. Перенесите тему в FreePascal!
ps Lazarus ни как не относится к данной теме. Lazarus - IDE+LCL. Перенесите тему в FreePascal!
Просмотрел все ссылки, вопрос прояснился, но вырисовалась проблема, программа все равно требует .so так как это прописано в исходниках, похоже проблема не решаема, кроме как прямым вызовом функций из статически приликованой библиотеки .
Как я понимаю, если Вы линкуете с .so, то этот .so будет требоваться. Может, и есть какой-нибудь "хитрый" путь, но я думаю, он не так прост, и, возможно, недокументирован вообще (т.е. Вам придётся подменить загрузчик ld.so или что-то вроде).
PS: как-то давно, когда о стабильности lazarus ещё можно было только мечтать, я попытался сделать обратное: "запихать" нештатным образом все статические .o-файлы из lcl и даже часть rtl+fcl (да, раньше classes.pp был в fcl) в .so, а потом подсунуть их линкеру. Результат был, в общем, отрицательным (полноценная ide не запустилась), но что-то даже заработало (какое-то окошко появилось).
PS: как-то давно, когда о стабильности lazarus ещё можно было только мечтать, я попытался сделать обратное: "запихать" нештатным образом все статические .o-файлы из lcl и даже часть rtl+fcl (да, раньше classes.pp был в fcl) в .so, а потом подсунуть их линкеру. Результат был, в общем, отрицательным (полноценная ide не запустилась), но что-то даже заработало (какое-то окошко появилось).
