Linker Problem oder was ganz anderes?



  • Hallo,

    ich stehe hier ein wenig ratlos da. Normalerweise habe ich früher über Visual Studio C programmiert, aber bin jetzt aufgrund meines wechsels zu Ubuntu "gezwungen" gcc zu nutzen.

    Leider habe ich schon einiges probiert und werde doch nicht ganz schlau.

    Zu meinem Problem:

    Ich schreibe eine Programm das auf eine postgres und eine mysql Datenbankzugreifen muss, dementsprechend müssen einige libs und includes hinzugefügt werden.

    Aber ich bekomme jedes mal fehler wie:
    /usr/bin/ld: warning: cannot find entry symbol --library=mysqlclient; defaulting to 00000000004006a0
    
    pgconn.c:(.text+0x1d): undefined reference to `mysql_query'
    pgconn.c:(.text+0x2d): undefined reference to `mysql_error'
    

    (konnte nicht mehr einfügen da mir seltsamerweise "Maximal sind 10 Smilies erlaubt!" angezeigt wird.)

    ich habe alles mögliche schon probiert. Über makefile/geany (wobei ich da nicht wirklich klar komme) und ganz normal über gcc.

    Doch leider bekomme ich es nicht hin.

    Wäre nett wenn mir jemand weiterhelfen könnte.


  • Mod

    Was tust du, was zu diesem Ergebnis führt?



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (C89, C99 und C11) in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • SeppJ schrieb:

    Was tust du, was zu diesem Ergebnis führt?

    kedas schrieb:

    pgconn.c:(.text+0x1d): undefined reference to `mysql_query'
    pgconn.c:(.text+0x2d): undefined reference to `mysql_error'
    
    kedas@ubuntu:~/Desktop/ConToLx$ gcc -e -I/home/kedas/Desktop/ConToLx/include -lmysqlclient -L/usr/local/lib  pgconn.c
    

    oder auch via makefile

    CC=gcc
    INCLUDES = -I/usr/include/mysql -I/usr/include/postgresql
    LIBS = -lmysqlclient -/usr/lib
    CFLAGS=-I$(INC)
    LDLIBS=-L$(LIB) -lpq
    ALL = pgconn
    all: $(ALL)
    clean: @rm -f *.o *~ $(ALL)
    

  • Mod

    So viel Information! Da kann man ja kaum Relevantes und Irrelevantes trennen.[/Ironie]

    Weißt du, was die Kommandozeilenoption '-e' macht (außer, dass sie deinen ersten Fehler verursacht)?

    Beim Linken ist die Reihenfolge wichtig. Links stehen die Sachen, die Symbole aus den Bibliotheken weiter rechts brauchen.


Anmelden zum Antworten