從原始碼建立 MySQL 伺服器時如何連結到自訂庫?
P粉087951442
P粉087951442 2024-04-01 14:30:27
0
1
440

我根據以下網址使用標準來源發行版 (mysql-server-8.0) 安裝了 MySQL 伺服器:https://dev.mysql.com/doc/refman/8.0/en/installing-source-distribution.html。出於某種目的,我在mysql-server-8.0/sql/mysqld.cc中的MySQL原始碼中添加了一些程式碼,並且我添加的程式碼使用了/usr/lib 中的自訂.so庫。

我想在建立MySQL原始碼時連結到這個函式庫,所以當我建立MySQL時,我使用了以下命令:

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

雖然我嘗試在編譯和鏈接時添加標誌,但未能完成構建,報告 error: undefined reference to 'symbols in my library' 。有什麼辦法讓它發揮作用嗎?謝謝!

P粉087951442
P粉087951442

全部回覆(1)
P粉976737101

感謝您的評論!我發現我在.cc原始檔中沒有正確使用C。應該注意的是,在 .cc 檔案中,C 頭檔的用法應如下所示:

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

所以連結過程運作良好。由於我誤用了 .cc 檔案中的函式庫頭,編譯器無法辨識函式簽章。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板