PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fehler beim kompilieren mit gcc



|Rene|
09.09.05, 09:55
Hallo,

ich stehe von einem vielleicht einfachem Problem.
Wir haben eine Schnittstelle entwickelt um SAP über einen Scheduler anzusprechen.

Um nicht immer aktuelle Bibliotheken mitgeben zu müssen soll das ganze über archived Libary gemacht werden.

Unter AIX lies sich das ganze ohne Probleme compilieren, unter Linux mit GCC bekomme ich allerdings einige Fehler die ich nicht zuordnen kann. Vielleicht ist nur eine Compileroption falsch.

Rufe den gcc mit folgenden Optionen auf über ein Shell-Script auf:

gcc -funsigned-char -Wcast-align -pthread -fPIC -DSAPwithTHREADS -DSAPonLIN -c "$PROG".c blowfish.c

Nach Compilieren und vor Linken

gcc -funsigned-char -pthread -fPIC -L/usr/lib -L/usr/sap/bin -L. -o "$PROG" "$PROG".o blowfish.o -lrfc

Nun bekomm ich diese Fehlerliste ausgegeben:

./librfc.a(rfcilib.o)(.text+0x2d760): In function `zdate_abs':
: undefined reference to `floor'
./librfc.a(rfcilib.o)(.text+0x2d77d): In function `zdate_abs':
: undefined reference to `floor'
./librfc.a(cpictlib.o)(.text+0x39b64): In function `LinStack':
: undefined reference to `dladdr'
./librfc.a(cpictlib.o)(.text+0x3a2e2): In function `DlLoadLib':
: undefined reference to `dlopen'
./librfc.a(cpictlib.o)(.text+0x3a356): In function `DlLoadLib':
: undefined reference to `dlerror'
./librfc.a(cpictlib.o)(.text+0x3a48e): In function `DlUnloadLib':
: undefined reference to `dlclose'
./librfc.a(cpictlib.o)(.text+0x3a4f0): In function `DlUnloadLib':
: undefined reference to `dlerror'
./librfc.a(cpictlib.o)(.text+0x3a65c): In function `DlLoadFunc':
: undefined reference to `dlsym'
./librfc.a(cpictlib.o)(.text+0x3a685): In function `DlLoadFunc':
: undefined reference to `dlerror'
./librfc.a(cpictlib.o)(.text+0x664b3): In function `nlsui_dlopen':
: undefined reference to `dlopen'
./librfc.a(cpictlib.o)(.text+0x664c5): In function `nlsui_dlopen':
: undefined reference to `dlerror'
./librfc.a(cpictlib.o)(.text+0x66651): In function `nlsui_dlclose':
: undefined reference to `dlclose'
./librfc.a(cpictlib.o)(.text+0x66663): In function `nlsui_dlclose':
: undefined reference to `dlerror'
./librfc.a(cpictlib.o)(.text+0x66784): In function `nlsui_dlsym':
: undefined reference to `dlsym'
./librfc.a(cpictlib.o)(.text+0x6679b): In function `nlsui_dlsym':
: undefined reference to `dlerror'
./librfc.a(cpictlib.o)(.text+0x6703c): In function `mapIcuUtilFunctions':
: undefined reference to `dlerror'
./librfc.a(cpictlib.o)(.text+0x671a6): In function `mapIcuUtilFunctions':
: undefined reference to `dlerror'
./librfc.a(cpictlib.o)(.text+0x6730a): In function `mapIcuUtilFunctions':
: undefined reference to `dlerror'
./librfc.a(cpictlib.o)(.text+0x67476): In function `mapIcuUtilFunctions':
: undefined reference to `dlerror'
./librfc.a(cpictlib.o)(.text+0x675da): more undefined references to `dlerror' follow

Die Libary die eingebunden werden soll ist die librfc.a von SAP

Detrius
09.09.05, 13:31
./librfc.a(rfcilib.o)(.text+0x2d760): In function `zdate_abs':
: undefined reference to `floor'
floor ist in der libm, die Du nicht mit angegeben hast. Einfach ein -lm mitgeben.


./librfc.a(cpictlib.o)(.text+0x39b64): In function `LinStack':
: undefined reference to `dladdr'

Das sollte in der libdl sein. Also fehlt noch ein -ldl.