[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: