g++ kann libmysqlclient nur dynamisch und nicht statisch linken?



  • Hallo,

    ich versuche, ein C++ Programm unter Debian mit g++ zu kompilieren und zu linken.
    Dieses Programm verwendet die MySQLClient Lib.

    Wenn ich diese Lib dynamisch linke, wird das Programm ohne Probleme erstellt, aber wenn ich es statisch probiere, treten Linker-Fehler auf, als ob die Bibliothek fehlen würde..

    Dynamisch gelinkt funktioniert es:

    g++ -I/[PFAD]/include/ /[PFAD]/lib/libmysqlclient.so main.cpp config.cpp -o pazaakserver
    

    Statisch gelinkt jedoch nicht:

    g++ -I/[PFAD]/include/ /[PFAD]/lib/libmysqlclient.a main.cpp config.cpp -o pazaakserver
    

    Ausgabe, wenn statisch gelinkt wird:

    /tmp/ccAZ3M7D.o: In function `InitializeMySQL(CConfig const&)':
    main.cpp:(.text+0x90): undefined reference to `mysql_init'
    main.cpp:(.text+0xf8): undefined reference to `mysql_real_connect'
    main.cpp:(.text+0x1a1): undefined reference to `mysql_query'
    main.cpp:(.text+0x1b9): undefined reference to `mysql_errno'
    main.cpp:(.text+0x24c): undefined reference to `mysql_query'
    main.cpp:(.text+0x26a): undefined reference to `mysql_query'
    main.cpp:(.text+0x347): undefined reference to `mysql_query'
    main.cpp:(.text+0x356): undefined reference to `mysql_errno'
    /tmp/ccAZ3M7D.o: In function `main':
    main.cpp:(.text+0x45d): undefined reference to `mysql_close'
    /tmp/ccAZ3M7D.o: In function `mysql_print_error(st_mysql*)':
    main.cpp:(.text._Z17mysql_print_errorP8st_mysql[mysql_print_error(st_mysql*)]+0xf): undefined reference to `mysql_error'
    main.cpp:(.text._Z17mysql_print_errorP8st_mysql[mysql_print_error(st_mysql*)]+0x1c): undefined reference to `mysql_errno'
    collect2: ld returned 1 exit status
    

    Die libmysqlclient.a (und die libmysqlclient.so) existieren natürlich in dem angegebenen Verzeichnis.

    Woran könnte es liegen, dass es statisch nicht funktioniert?
    MfG

    // Edit: Zur Verdeutlichung die Befehle geändert



  • Ändere mal die Reihenfolge zu:

    g++ -I/[PFAD]/include/ main.cpp config.cpp /[PFAD]/lib/libmysqlclient.a -o pazaakserver
    


  • Perfekt, jetzt funktionierts!
    Danke!

    Ich dachte nicht, das die Reihenfolge entscheidend ist..


Anmelden zum Antworten