Heim  >  Fragen und Antworten  >  Hauptteil

Wie verlinke ich eine benutzerdefinierte Bibliothek, wenn ich einen MySQL-Server aus dem Quellcode erstelle?

Ich habe den MySQL-Server mit der Standard-Quelldistribution (mysql-server-8.0) gemäß https://dev.mysql.com/doc/refman/8.0/en/installing-source-distribution.html installiert. Aus irgendeinem Grund bin ich in der mysql-server-8.0/sql/mysqld.cc中的MySQL源代码中添加了一些代码,并且我添加的代码使用了/usr/lib中的自定义.so-Bibliothek.

Ich wollte beim Erstellen des MySQL-Quellcodes auf diese Bibliothek verlinken, deshalb habe ich beim Erstellen von MySQL den folgenden Befehl verwendet:

cmake .. -DWITH_BOOST=/home/ubuntu/mysql-server-8.0/boost \
         -DCMAKE_C_FLAGS="-lmy_lib_name -L/usr/lib" \
         -DCMAKE_CXX_FLAGS="-lmy_lib_name -L/usr/lib" \
         -DCMAKE_C_LINK_FLAGS="-lmy_lib_name -L/usr/lib" \
         -DCMAKE_CXX_LINK_FLAGS="-lmy_lib_name -L/usr/lib" \
         -DCONFIG_CLIENT_LIBS="-lmy_lib_name -L/usr/lib" \
         -DCONFIG_LIBS_PRIVATE="-lmy_lib_name -L/usr/lib" \
         -DCMAKE_EXE_LINKER_FLAGS="-lmy_lib_name -L/usr/lib" \
         -DCMAKE_MODULE_LINKER_FLAGS="-lmy_lib_name -L/usr/lib" \
         -DCMAKE_SHARED_LINKER_FLAGS="-lmy_lib_name -L/usr/lib" \
make

Obwohl ich beim Kompilieren und Verknüpfen versucht habe, das Flag hinzuzufügen, konnte der Build nicht abgeschlossen werden, berichtet error: undefined reference to 'symbols in my library' . Gibt es eine Möglichkeit, es zum Laufen zu bringen? Danke!

P粉087951442P粉087951442182 Tage vor314

Antworte allen(1)Ich werde antworten

  • P粉976737101

    P粉9767371012024-04-02 13:27:24

    感谢您的评论!我发现我在.cc源文件中没有正确使用C。应该注意的是,在 .cc 文件中,C 头文件的用法应如下所示:

    extern "C" {
      #include "mylib.h"
    }

    所以链接过程运行良好。由于我误用了 .cc 文件中的库头,编译器无法识别函数签名。

    Antwort
    0
  • StornierenAntwort