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

Re: how to compile?



Pavel wrote:

Привет,

Отдаю себе отчет что это оффтоп...

В наследство достался java проект, настраиваю его локально.
Разработчик, который работал над ним до меня, написал custom функцию для постгре на С.

Подскажите плз. как ее скомпилировать в .so файл чтобы объявить ее потом:

CREATE FUNCTION upper_utf8(text) RETURNS text
    AS '/foobar/upper_utf8.so',    'upper_utf8'
    LANGUAGE c;

Я не знаю си, и, соответсвенно, не очень хорошо представляю себе как это всё скомпилить и какие библиотеки нужно будет для этого заимпротить.

Вот кусок функции... похоже что #include это то же что и import, но не знаю где взять postgres.h либу и положить ее на путь.

#include <postgres.h>

text *upper_utf8(text *t);

text *upper_utf8(text *t)
{
        text *new_t = (text *) palloc(VARSIZE(t));
        int i;

        VARATT_SIZEP(new_t) = VARSIZE(t);

.... и т.д.

Буду признателен за любую помощь... Сслыку по теме (для чайников) - было бы в самый раз.

Спасибо!
Павел.

"#" - означает директиву для препроцессора. #include <some.h> означает, что препроцессор должен взять из стандартного каталога include/ файл some.h и вклеить его содержимое по месту вызова директивы. Стандартный каталог с .h файлами находится в /usr/include. Файлы заголовков (те самые .h) нужны для того, чтоб компилятор знал какие функции и структуры из библиотек (.o, .so и т.п.) можно использовать и каким именно образом. Содержаться заголовки в пакетах вида *dev А вот насчет ссылок затрудняюсь. Попробуй погуглить "Дж. Либерти" или "Дэйтел" (эти граждане написали крайне толковые книги по С и С++).



Reply to: