Problem mit gcc.

Hallo zusammen.

Ich habe ein Programm das ich gerne mit gcc übersetzen möchte
und nicht mit make.

Im Programm binde ich zwei Header Dateien ein:

Code:
#include "ctapi.h"
#include "ctbcs.h"
...

Die Dateien liegen in /usr/local/towitoko/include/.

Im Headerfile ctapi.h sind die zwei Funktionsprotoypen:

Code:
char CT_close(
      unsigned short Ctn                  /* Terminal Number */
      );                 

char CT_data( 
       unsigned short ctn,                /* Terminal Number */
       unsigned char  *dad,               /* Destination */
       unsigned char  *sad,               /* Source */
       unsigned short lc,                 /* Length of command */
       unsigned char  *cmd,               /* Command/Data Buffer */
       unsigned short *lr,                /* Length of Response */
       unsigned char  *rsp                /* Response */
       );

Jetzt habe ich mitz folgendem Befehl kompiliert:
gcc -o ct_test ct_test.c -I/usr/local/towitoko/include

Danach bekomme ich folgende Fehlermeldung:

/tmp/ccEuE90e.o(.text+0x252): In function `CTAPI_CT_INIT':
: undefined reference to `CT_init'
/tmp/ccEuE90e.o(.text+0x2e4): In function `CTBCS_REQUEST_ICC':
: undefined reference to `CT_data'

Im Makefile.am steht aber noch folgende Zeile:
ct_test_LDADD = /usr/local/towitoko/lib/libtowitoko.la

in diesm Verzeichniss gibt es auch noch die Dateien:
libtowitoko.la libtowitoko.so libtowitoko.so.2 libtowitoko.so.2.0.0


Wie muss aber jetzt mein gcc Befehl aussehen damit ich das Programm auch
ohne make kompilieren kann?
 
Dir fehlen die nötigen Implementiereungen zu deinen Prototypen,
die wahrscheinlich in deiner libtowitoko liegen, die du folgendermassen dazu linken
kannst:

Code:
gcc -o ct_test ct_test.c -I/usr/local/towitoko/include -L/usr/local/towitoko/lib -ltowitoko

Gruß

RedWing
 
Danke für die Antwort, leider hatte ich mir das auch schon gedacht und den selben Befehl ausprobiert. Es läuft auch ohne Fehler durch, wenn ich aber dann das programm ct_test starte bekomme ich folgende Fehlermeldung:

Code:
./ct_test: error while loading shared libraries: libtowitoko.so.2: cannot open shared object file: No such file or directory

Ich habe aber noch folgenden Befehl gefunden:

Code:
gcc -o ct_test ct_test.c /usr/local/towitoko/lib/libtowitoko.so -Wl,--rpath -Wl,/usr/local/towitoko/lib -I /usr/local/towitoko/include/

Allerdings weiß ich nicht so rechte was diese Optionen machen.
 
Code:
./ct_test: error while loading shared libraries: libtowitoko.so.2: cannot ope./ct_test: error while loading shared libraries: libtowitoko.so.2: cannot open shared object file: No such file or directoryn shared object file: No such file or directory

Du musst die Systemvariable LD_LIBRARY_PATH noch setzen, da deine
lib nicht in den Standard Libverz. deines Systems liegt.
Ein
Code:
export LD_LIBRARY_PATH=/usr/local/towitoko/lib
sollte abhilfe schaffen

Gruß

RedWing
 
Zurück