Comment créer un lien vers une bibliothèque personnalisée lors de la création d'un serveur MySQL à partir des sources ?
P粉087951442
P粉087951442 2024-04-01 14:30:27
0
1
306

J'ai installé le serveur MySQL en utilisant la distribution source standard (mysql-server-8.0) selon : https://dev.mysql.com/doc/refman/8.0/en/installing-source-distribution.html. Dans un but précis, je suis dans la bibliothèque mysql-server-8.0/sql/mysqld.cc中的MySQL源代码中添加了一些代码,并且我添加的代码使用了/usr/lib中的自定义.so.

Je voulais créer un lien vers cette bibliothèque lors de la création du code source MySQL, donc lorsque j'ai construit MySQL, j'ai utilisé la commande suivante :

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

Bien que j'aie essayé d'ajouter le drapeau lors de la compilation et de la liaison, la construction n'a pas pu se terminer, rapporte error: undefined reference to 'symbols in my library' . Existe-t-il un moyen de le faire fonctionner ? Merci!

P粉087951442
P粉087951442

répondre à tous(1)
P粉976737101

Merci pour votre commentaire ! J'ai trouvé que dans mon fichier .cc源文件中没有正确使用C。应该注意的是,在 .cc, l'utilisation du fichier d'en-tête C devrait ressembler à ceci :

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

Le processus de liaison fonctionne donc correctement. Le compilateur n'a pas reconnu la signature de la fonction car j'ai abusé de l'en-tête de la bibliothèque dans le fichier .cc.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!