Re: how to compile?
Pavel -> debian-russian @ Thu, 06 Apr 2006 23:27:51 +0300:
P> Привет,
P> Отдаю себе отчет что это оффтоп...
P> В наследство достался java проект, настраиваю его локально.
P> Разработчик, который работал над ним до меня, написал custom функцию для
P> постгре на С.
P> Подскажите плз. как ее скомпилировать в .so файл чтобы объявить ее потом:
P> CREATE FUNCTION upper_utf8(text) RETURNS text
P> AS '/foobar/upper_utf8.so', 'upper_utf8'
P> LANGUAGE c;
P> Я не знаю си, и, соответсвенно, не очень хорошо представляю себе как
P> это всё скомпилить и какие библиотеки нужно будет для этого
P> заимпротить.
P> Вот кусок функции... похоже что #include это то же что и import, но
P> не знаю где взять postgres.h либу и положить ее на путь.
zsh% apt-file search postgres.h
...
postgresql-server-dev-7.4: usr/include/postgresql/7.4/server/postgres.h
postgresql-server-dev-8.0: usr/include/postgresql/8.0/server/postgres.h
postgresql-server-dev-8.1: usr/include/postgresql/8.1/server/postgres.h
Соответственно, как только ты поставишь _соответствующий твоему серверу_
(несоответствующий тоже можно пробовать, но последствия за свой счет)
пакет, у тебя автомагически появятся и хедер, и необходимые библиотеки.
Дальше gcc -shared -o /foobar/upper_utf8.so upper_utf8.с -I/usr/include/postgresql/<версия>/server -L/usr/lib/postgresql/<версия>/lib -l...
А вот что вместо многоточия - вопрос сложный. Насколько мне показывает
Contents-i386.gz, в пакетах postgresql-server-dev дают
/usr/lib/postgresql/<версия>/bin/pg_config - он, скорее всего, знает. И про
-I и -L - тоже. Впрочем, возможно, он только про -I и -L знает. На
этот случай с постгресом дают весьма развесистую документацию, где и это
все тоже описано.
--
Artem Chuprina
RFC2822: <ran{}ran.pp.ru> Jabber: ran@jabber.ran.pp.ru
$lotr = $hobbit; # Просто копируем "Хоббита"
$lotr =~ s/Bilbo/Frodo/g; # и легко пишем продолжение.
из Camel Book
Reply to: