Deutsch
Germany.ruФорумы → Архив Досок→ Linux & Co

#include... ?

301  
  anatoli888 знакомое лицо07.07.06 17:19
07.07.06 17:19 
Как правильно прописать путь к библиотекам PostgreSQL что бы компайлер мог видеть остальные библиотеки подвязанные к этим: postgres.h, spi.h, trigger.h ?
вот сама программка реализующая тригер:
В ответ на:

#include "/usr/include/postgresql/server/postgres.h"
#include "/usr/include/postgresql/server/executor/spi.h" /* das braucht man für SPI */
#include "/usr/include/postgresql/server/commands/trigger.h" /* ... und für Trigger */
extern Datum stammbaum(PG_FUNCTION_ARGS);
PG_FUNCTION_INFO_V1(trigf);
Datum
trigf(PG_FUNCTION_ARGS)
{
TriggerData *trigdata = (TriggerData *) fcinfo->context;
TupleDesc tupdesc;
HeapTuple rettuple;
/* prüfe, ob sie überhaupt als Trigger aufgerufen wurde */
if (!CALLED_AS_TRIGGER(fcinfo)) !
elog(ERROR, "stammbaum: nicht als Trigger aufgerufen");
rettuple = trigdata->tg_trigtuple;

if (TRIGGER_FIRED_BY_INSERT(trigdata->tg_event))
if ( trigdata->tg_trigtuple->PferdId == trigdata->tg_trigtuple->MutterId)
rettuple = NULL;
return PointerGetDatum(rettuple);
}

спасибо зарание!
#1 
  anatoli888 знакомое лицо08.07.06 06:41
NEW 08.07.06 06:41 
в ответ anatoli888 07.07.06 17:19
компилирую пока просто: cc -c triggerfkt.c 2> log_trigger. вот лог:
ps: я где то прочитал что нужно сказать ему где лежат Header files, но вроде я сказал ему через инклуд или?
В ответ на:
In Datei, eingefügt von postgres.h:49,
von triggerfkt.c:1:
utils/elog.h:60:28: utils/errcodes.h: Datei oder Verzeichnis nicht gefunden
In Datei, eingefügt von triggerfkt.c:2:
executor/spi.h:16:22: postgres.h: Datei oder Verzeichnis nicht gefunden
executor/spi.h:22:29: nodes/primnodes.h: Datei oder Verzeichnis nicht gefunden
executor/spi.h:23:28: nodes/relation.h: Datei oder Verzeichnis nicht gefunden
executor/spi.h:24:29: nodes/execnodes.h: Datei oder Verzeichnis nicht gefunden
executor/spi.h:25:29: nodes/plannodes.h: Datei oder Verzeichnis nicht gefunden
executor/spi.h:26:29: catalog/pg_proc.h: Datei oder Verzeichnis nicht gefunden
executor/spi.h:27:29: catalog/pg_type.h: Datei oder Verzeichnis nicht gefunden
executor/spi.h:28:25: tcop/pquery.h: Datei oder Verzeichnis nicht gefunden
executor/spi.h:29:27: tcop/tcopprot.h: Datei oder Verzeichnis nicht gefunden
executor/spi.h:30:26: tcop/utility.h: Datei oder Verzeichnis nicht gefunden
executor/spi.h:31:23: tcop/dest.h: Datei oder Verzeichnis nicht gefunden
executor/spi.h:32:26: nodes/params.h: Datei oder Verzeichnis nicht gefunden
executor/spi.h:33:28: utils/builtins.h: Datei oder Verzeichnis nicht gefunden
executor/spi.h:34:25: utils/datum.h: Datei oder Verzeichnis nicht gefunden
executor/spi.h:35:26: utils/portal.h: Datei oder Verzeichnis nicht gefunden
executor/spi.h:36:28: utils/syscache.h: Datei oder Verzeichnis nicht gefunden
executor/spi.h:37:33: catalog/pg_language.h: Datei oder Verzeichnis nicht gefunden
executor/spi.h:38:27: access/heapam.h: Datei oder Verzeichnis nicht gefunden
executor/spi.h:39:25: access/xact.h: Datei oder Verzeichnis nicht gefunden
executor/spi.h:40:31: executor/executor.h: Datei oder Verzeichnis nicht gefunden
executor/spi.h:41:31: executor/execdefs.h: Datei oder Verzeichnis nicht gefunden
In file included from triggerfkt.c:2:
executor/spi.h:48: error: Syntaxfehler before "TupleDesc"
executor/spi.h:48: Warnung: kein Semikolon am Ende von »struct« oder »union«
executor/spi.h:49: Warnung: data definition has no type or storage class
executor/spi.h:50: error: Syntaxfehler before '}' token
executor/spi.h:50: Warnung: data definition has no type or storage class
executor/spi.h:77: error: Syntaxfehler before '*' token
executor/spi.h:77: Warnung: data definition has no type or storage class
executor/spi.h:93: error: Syntaxfehler before "SPI_copytuple"
executor/spi.h:93: error: Syntaxfehler before "tuple"
executor/spi.h:93: Warnung: data definition has no type or storage class
executor/spi.h:94: error: Syntaxfehler before "SPI_copytupledesc"
executor/spi.h:94: error: Syntaxfehler before "tupdesc"
executor/spi.h:94: Warnung: data definition has no type or storage class
executor/spi.h:95: error: Syntaxfehler before '*' token
executor/spi.h:95: error: Syntaxfehler before "tuple"
executor/spi.h:96: Warnung: data definition has no type or storage class
executor/spi.h:97: error: Syntaxfehler before "SPI_modifytuple"
executor/spi.h:97: error: Syntaxfehler before "rel"
executor/spi.h:98: Warnung: data definition has no type or storage class
executor/spi.h:99: error: Syntaxfehler before "tupdesc"
executor/spi.h:100: error: Syntaxfehler before "tupdesc"
executor/spi.h:101: error: Syntaxfehler before "tuple"
executor/spi.h:102: error: Syntaxfehler before "tuple"
executor/spi.h:103: error: Syntaxfehler before "tupdesc"
executor/spi.h:104: error: Syntaxfehler before "tupdesc"
executor/spi.h:105: error: Syntaxfehler before "rel"
executor/spi.h:109: error: Syntaxfehler before "pointer"
executor/spi.h:110: error: Syntaxfehler before '*' token
executor/spi.h:112: error: Syntaxfehler before "SPI_cursor_open"
executor/spi.h:113: Warnung: data definition has no type or storage class
executor/spi.h:114: error: Syntaxfehler before "SPI_cursor_find"
executor/spi.h:114: Warnung: data definition has no type or storage class
executor/spi.h:115: error: Syntaxfehler before "portal"
executor/spi.h:116: error: Syntaxfehler before "portal"
executor/spi.h:117: error: Syntaxfehler before "portal"
In Datei, eingefügt von triggerfkt.c:3:
commands/trigger.h:16:29: nodes/execnodes.h: Datei oder Verzeichnis nicht gefunden
commands/trigger.h:17:30: nodes/parsenodes.h: Datei oder Verzeichnis nicht gefunden
In file included from triggerfkt.c:3:
commands/trigger.h:31: error: Syntaxfehler before "NodeTag"
commands/trigger.h:31: Warnung: kein Semikolon am Ende von »struct« oder »union«
commands/trigger.h:33: error: Syntaxfehler before "tg_relation"
commands/trigger.h:33: Warnung: data definition has no type or storage class
commands/trigger.h:34: error: Syntaxfehler before "tg_trigtuple"
commands/trigger.h:34: Warnung: data definition has no type or storage class
commands/trigger.h:35: error: Syntaxfehler before "tg_newtuple"
commands/trigger.h:35: Warnung: data definition has no type or storage class
commands/trigger.h:36: error: Syntaxfehler before '*' token
commands/trigger.h:36: Warnung: data definition has no type or storage class
commands/trigger.h:37: error: Syntaxfehler before '}' token
commands/trigger.h:37: Warnung: data definition has no type or storage class
commands/trigger.h:105: error: Syntaxfehler before '*' token
commands/trigger.h:108: error: Syntaxfehler before "DropBehavior"
commands/trigger.h:113: error: Syntaxfehler before "relation"
commands/trigger.h:115: error: Syntaxfehler before '*' token
commands/trigger.h:115: error: Syntaxfehler before '*' token
commands/trigger.h:115: Warnung: data definition has no type or storage class
commands/trigger.h:117: error: Syntaxfehler before '*' token
commands/trigger.h:119: error: Syntaxfehler before '*' token
commands/trigger.h:121: error: Syntaxfehler before '*' token
commands/trigger.h:123: error: Syntaxfehler before "ExecBRInsertTriggers"
commands/trigger.h:123: error: Syntaxfehler before '*' token
commands/trigger.h:125: Warnung: data definition has no type or storage class
commands/trigger.h:126: error: Syntaxfehler before '*' token
commands/trigger.h:129: error: Syntaxfehler before '*' token
commands/trigger.h:131: error: Syntaxfehler before '*' token
commands/trigger.h:133: error: Syntaxfehler before '*' token
commands/trigger.h:137: error: Syntaxfehler before '*' token
commands/trigger.h:140: error: Syntaxfehler before '*' token
commands/trigger.h:142: error: Syntaxfehler before '*' token
commands/trigger.h:144: error: Syntaxfehler before "ExecBRUpdateTriggers"
commands/trigger.h:144: error: Syntaxfehler before '*' token
commands/trigger.h:148: Warnung: data definition has no type or storage class
commands/trigger.h:149: error: Syntaxfehler before '*' token
commands/trigger.h:179: error: Syntaxfehler before "ItemPointerData"
commands/trigger.h:179: Warnung: kein Semikolon am Ende von »struct« oder »union«
commands/trigger.h:180: Warnung: data definition has no type or storage class
commands/trigger.h:184: error: Syntaxfehler before '}' token
commands/trigger.h:184: Warnung: data definition has no type or storage class
commands/trigger.h:193: error: Syntaxfehler before '*' token
commands/trigger.h:199: error: Syntaxfehler before '*' token
commands/trigger.h:200: error: Syntaxfehler before '*' token
triggerfkt.c:5: Warnung: Parameternamen (ohne Typen) in Funktionsdeklaration
triggerfkt.c:7: Warnung: Parameternamen (ohne Typen) in Funktionsdeklaration
triggerfkt.c:7: Warnung: data definition has no type or storage class
triggerfkt.c: In Funktion »triggerfkt«:
triggerfkt.c:12: error: `trigdata' undeclared (first use in this function)
triggerfkt.c:12: error: (Each undeclared identifier is reported only once
triggerfkt.c:12: error: for each function it appears in.)
triggerfkt.c:12: error: Syntaxfehler before ')' token
triggerfkt.c:13: error: `TupleDesc' undeclared (first use in this function)
triggerfkt.c:14: error: `HeapTuple' undeclared (first use in this function)
triggerfkt.c:17: error: `fcinfo' undeclared (first use in this function)
triggerfkt.c:20: error: `rettuple' undeclared (first use in this function)
triggerfkt.c:31:2: Warnung: Kein Newline am Dateiende

#2 
Russman коренной житель08.07.06 10:40
Russman
NEW 08.07.06 10:40 
в ответ anatoli888 08.07.06 06:41
Укажи компилятору через опцию -I пути к твоим хедерам, туда где находится executor/spi.h etc.
---
А связь у меня никогда не обpываЦ%Я(+P^ NO CARRIER
#3 
torpedouk завсегдатай08.07.06 13:52
torpedouk
NEW 08.07.06 13:52 
в ответ anatoli888 07.07.06 17:19
надо указать путь к хидарам именно компилятору, а в самой программе уде достаточно ставить просто:
#include <postgres.h>
#4 
  anatoli888 знакомое лицо08.07.06 22:53
NEW 08.07.06 22:53 
в ответ torpedouk 08.07.06 13:52
я в начале именно так и писал но компилятор ругался что не видит postgres.h, поэтому и вписал полный путь. но в этом случае он видит только те библиотеки которые я ему указал через include. привязаные к указаным библиотекам библиотеки компилятор не видит.
#5 
  anatoli888 знакомое лицо09.07.06 12:12
NEW 09.07.06 12:12 
в ответ Russman 08.07.06 10:40
короче написал: cc -I=/usr/include/postgresql/server/executor -c triggerfkt.c 2> log_triggerap. в логе тоже самое что я запостил наверху. пробовал с полным путем и просто.
#6 
Russman коренной житель10.07.06 10:05
Russman
NEW 10.07.06 10:05 
в ответ anatoli888 09.07.06 12:12
А postgres.h разве лежит в /usr/include/postgresql/server/executor? Подозреваю, что не те пути указываешь. А -I=/usr/inc... несколько страння форма записи для меня, я привык к -I/usr/...
---
Две pуки, две ноги, оба глаза - быть обязан счастливым, заpаза!
#7 
  anatoli888 знакомое лицо10.07.06 11:53
NEW 10.07.06 11:53 
в ответ Russman 10.07.06 10:05
я сразу после того как запостил, заметил что путь /usr/include/postgresql/server/executor не правилен. executor-a там не должно быть на конце. а с опцией а пробовал по всякому "-I=<pfad>", "-I <pfad>". но вчера все не выходило. сегодня запустил: cc -c -I /usr/include/postgresql/server triggerfkt.c 2> log_ex из папки /home/postgres/ где лежал triggerfkt.c и все пошло!
Спасибо!!!
#8