我根据以下网址使用标准源发行版 (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' 。有什么办法让它发挥作用吗?谢谢!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
感谢您的评论!我发现我在
.cc源文件中没有正确使用C。应该注意的是,在.cc文件中,C 头文件的用法应如下所示:extern "C" { #include "mylib.h" }所以链接过程运行良好。由于我误用了
.cc文件中的库头,编译器无法识别函数签名。