Статическое связывание или программа с библиотекой в одном

Вопросы программирования на Free Pascal, использования компилятора и утилит.

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

Статическое связывание или программа с библиотекой в одном

Сообщение Ism » 08.05.2011 23:15:09

Привет, пишу, потому, что в этой области знаю очень мало.
Есть программа (база данных) + библиотека libsqlite3.so + Lazarus+ Linux
Слышал, что библиотеку и программу можно связать в один исполняемый файл, но как это сделать в гугле ничего путного.
Попадаются примеры статической линковки отдельных функций, но это не то.
Мне нужен исполняемый файл, который ни в чем не нуждается при работе с базой sqlite. Проще говоря "экзешник" и сама база .

И вообще возможно ли это ?
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Статическое связывание или программа с библиотекой в одном

Сообщение daesher » 09.05.2011 00:18:24

Вам нужно связывать код не с библиотекой *.so, а со статической библиотекой *.a (которую надо ещё найти), в этом случае получится один исполняемый файл.
daesher
постоялец
 
Сообщения: 221
Зарегистрирован: 09.03.2010 22:17:14

Re: Статическое связывание или программа с библиотекой в одном

Сообщение Ism » 09.05.2011 00:47:06

Хорошо, а как связать либу с исполняемым файлом, какие опции должны быть в Lazarus ?
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Статическое связывание или программа с библиотекой в одном

Сообщение Mr.Smart » 09.05.2011 03:55:41

http://www.freepascal.ru/forum/viewtopic.php?f=13&t=6536&st=0&sk=t&sd=a

ps Lazarus ни как не относится к данной теме. Lazarus - IDE+LCL. Перенесите тему в FreePascal!
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Статическое связывание или программа с библиотекой в одном

Сообщение Ism » 09.05.2011 18:38:16

Просмотрел все ссылки, вопрос прояснился, но вырисовалась проблема, программа все равно требует .so так как это прописано в исходниках, похоже проблема не решаема, кроме как прямым вызовом функций из статически приликованой библиотеки .
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Статическое связывание или программа с библиотекой в одном

Сообщение daesher » 09.05.2011 19:26:24

Как я понимаю, если Вы линкуете с .so, то этот .so будет требоваться. Может, и есть какой-нибудь "хитрый" путь, но я думаю, он не так прост, и, возможно, недокументирован вообще (т.е. Вам придётся подменить загрузчик ld.so или что-то вроде).
PS: как-то давно, когда о стабильности lazarus ещё можно было только мечтать, я попытался сделать обратное: "запихать" нештатным образом все статические .o-файлы из lcl и даже часть rtl+fcl (да, раньше classes.pp был в fcl) в .so, а потом подсунуть их линкеру. Результат был, в общем, отрицательным (полноценная ide не запустилась), но что-то даже заработало (какое-то окошко появилось).
daesher
постоялец
 
Сообщения: 221
Зарегистрирован: 09.03.2010 22:17:14


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 7

Рейтинг@Mail.ru