[C][nOOb] Compiler problemen

Pagina: 1
Acties:

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Topicstarter
Ik ben bezig met een project waar ik een aantal C files moet her-compileren. Aangezien we van platform zijn veranderd. Maar helaas gaat het niet zo simpel als we gedacht hadden. Dit komt waarschijnlijk door dat we iets heeeeeel simpels over het hoofd zien.

De C files worden eerst naar .o files gecompileerd (Dit gaat goed zonder Warnings of Fout meldingen). Daarna zouden ze allemaal gelinkt moet worden tot 1 .o file (alleen hier krijg ik dus een foutmelding.) :(

De foutmelding die ik krijg is (meerdere malen en soms is de functienaam anders):
code:
1
undefined reference to fgl_fatal

Deze staat in een wel gedefineerd in een include (.a). Dus hij neem kennelijk de include niet mee.

De compiler wordt aangestuurd door het volgende commando
code:
1
2
3
4
5
6
7
8
9
cc -fwriteable-strings -fpic -I/appl/informix/incl/tools -I/appl/informix/incl/esql fgiusr.o beep.o
clrerr.o f.o getenv.o getkey.o weeknr.o pid.o same.o 
-lm -lc -s -o fglgo /appl/informix/lib/tools/libfmain.a
-L/appl/informix/lib -L/appl/informix/lib/esql -L/appl/informix/lib/lib/tools
/appl/informix/lib/tools/libfglgo.a /appl/informix/lib/tools/lib4gl.a /appl/informix/lib/tools/lib4io.a
/appl/informix/lib/tools/libnmenu.a /appl/informix/lib/tools/lib4io.a /appl/informix/lib/tools/librdstrem.a 
/appl/informix/lib/tools/libfmain.a
-lcurses -liffgisql -lifasf -lifgen -lifos -lc -lm -ldl -lcrypt 
/appl/informix/lib/esql/checkapi.o -lifglx -lc -lm -ldl -lcrypt -lcurses

De enters die hierin staan STAAN NIET in het echte commando gedaan voor een beetje leesbaarheid.

Aangezien ik niet zo bedreven ben met c heb ik geen idee hoe ik de fout moet gaan zoeken. Als iemand me kan helpen of in iedere geval op weg helpen?

Als ik dit eenmaal gehad dan kan ik voorlopig het c gedeelte afsluiten. :) Maar ik weer lekker verder gaan met de 4gl :)

ps. Moet nog kijken de compiler regel een beetje netjes is... ben hier niet ingelogd. Ik doe dit gelijk na het posten ... :Y)

Programmer - an organism that turns coffee into software.


  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 31-08 22:49
ben ook niet echt een held ofzo in c (compilen und so) .. maar staan er wel -l's voor die .a's ?

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Topicstarter
Nee...

Maar ik heb het gelijk geprobeert.

Krijg dan de volgende error;
code:
1
/usr/bin/ld: cannot find -l/appl/informix/lib/tools/libfmain.a

Bestand bestaat wel op die locatie....

Programmer - an organism that turns coffee into software.


Verwijderd

Op donderdag 18 april 2002 12:02 schreef LuCarD het volgende:
code:
1
undefined reference to fgl_fatal
Je linkt niet met de juiste libs (i.e. je vergeet er een paar), je maakt gebruik van static functions terwijl ze public (non-static) moeten zijn, je neemt niet alle .o's mee tijdens het linken naar de executable...

Dit kan echt alles zijn ;)

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Topicstarter
Op donderdag 18 april 2002 15:47 schreef beelzebubu het volgende:

[..]

Je linkt niet met de juiste libs (i.e. je vergeet er een paar), je maakt gebruik van static functions terwijl ze public (non-static) moeten zijn, je neemt niet alle .o's mee tijdens het linken naar de executable...

Dit kan echt alles zijn ;)
Oke..... Mogelijkheden genoeg :'( ... Oplossing nog te weinig ;) , maar oke.

- StaticLibaries zijn gemaakt door de DB Installer. Geen mogelijkheid om die anders te installeren. Dit komt door de rare installatie procedure van Informix. Daar kunnen we ook niet vanaf wijken. :(
- Niet alle .o dat is mogelijk, maar....
nm * -a | grep ibm_lib4gl_fgFatal verteld mij de naam waar de functie is gedefineerd. (ibm_lib4gl_fgFatal == de alias van fgl_fatal volgens de .h file)
Deze file is wel geinclude ik zie tenminste in het lijstje staan.

Wat ik wel heb gevonden op de nieuws groepen van informix, is dat je compat libaries moet installeren, maar volgens zijn die wel geinstalleerd. Maar hoe kan ik dit controleren? :?

Programmer - an organism that turns coffee into software.


Verwijderd

Op donderdag 18 april 2002 16:24 schreef LuCarD het volgende:
- Niet alle .o dat is mogelijk, maar....
nm * -a | grep ibm_lib4gl_fgFatal verteld mij de naam waar de functie is gedefineerd. (ibm_lib4gl_fgFatal == de alias van fgl_fatal volgens de .h file)
Deze file is wel geinclude ik zie tenminste in het lijstje staan.
is die functie static?

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Topicstarter
Op donderdag 18 april 2002 19:13 schreef beelzebubu het volgende:

[..]

is die functie static?
Ermmm.... C noob :)

Hoe moet je dat controleren?

Maar de Source code heeft al gewerkt op een ander platform (SCO 5). Ik ben hem nu alleen aan het hercompileren voor RH7.2/kernel 2.4.7 .
Dus naar mijn idee moet dat gewoon werken... of heb ik dat mis?

Programmer - an organism that turns coffee into software.


Verwijderd

Op donderdag 18 april 2002 23:45 schreef LuCarD het volgende:

[..]

Ermmm.... C noob :)

Hoe moet je dat controleren?

Maar de Source code heeft al gewerkt op een ander platform (SCO 5). Ik ben hem nu alleen aan het hercompileren voor RH7.2/kernel 2.4.7 .
Dus naar mijn idee moet dat gewoon werken... of heb ik dat mis?
gewoon, staat er 'static' in de functie header beschrijving? :)

En als het voor linux is, gebruik dan gcc ipv cc ;)

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Topicstarter
Op donderdag 18 april 2002 23:58 schreef beelzebubu het volgende:

[..]

gewoon, staat er 'static' in de functie header beschrijving? :)

En als het voor linux is, gebruik dan gcc ipv cc ;)
Ik zal morgen kijken, over er static bij staat... :)

gcc oke... geen probleem dat lukt me... :)

[heel erge nOOb mode]
Wat is het verschil?
[/heel erge nOOb mode]

Programmer - an organism that turns coffee into software.


  • BCC
  • Registratie: Juli 2000
  • Laatst online: 08:47

BCC

GCC is van GNU.

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Topicstarter
Op donderdag 18 april 2002 23:58 schreef beelzebubu het volgende:

[..]

gewoon, staat er 'static' in de functie header beschrijving? :)
de .h file (alleen relevante gedeelte)
code:
1
2
#define fgl_fatal(x, y, z)    ibm_lib4gl_FatalError(x, y, z)
extern void ibm_lib4gl_FatalError(int1 *prognm, mint lineno, mint errorno);

Hou er rekening mee dat dit libaries zijn van Informix en deze kan ik dus niet veranderen. Als deze niet goed zijn dan zijn er kennelijk nog andere libraries verkrijgbaar. Helaas zijn deze nogal lastig verkrijgbaar, aangezien het om een oude versie zou moeten gaan. En de huidige eigenaar van Informix doet een poging om zijn eigen product te promoten (IBM DB/2 ), dus support is summier :'(.

Programmer - an organism that turns coffee into software.

Pagina: 1