我一直在尝试使用cargo install diesel_cli
安装Rust Diesel CLI工具,但安装失败并出现链接错误
ld: library not found for -lmysqlclient
clang: error: linker command failed with exit code 1
(use -v to see invocation)
我使用Homebrew:brew install mysql-client
安装了MySQL客户端。在安装过程中,我收到以下警告:
mysql-client is keg-only, which means it was not symlinked into /usr/local,
because conflicts with mysql.
If you need to have mysql-client first in your PATH run:
echo 'export PATH="/usr/local/opt/mysql-client/bin:$PATH"' >> ~/.bash_profile
For compilers to find mysql-client you may need to set:
export LDFLAGS="-L/usr/local/opt/mysql-client/lib"
export CPPFLAGS="-I/usr/local/opt/mysql-client/include”
我在该警告消息中设置了PATH
和flags,但在尝试安装diesel-cli工具时仍然遇到上述链接错误。我不熟悉如何在Rust中进行链接 - 我需要在这里执行额外的步骤来直接链接mysqlclient吗?
货物忽略LDFLAGS
和CPPFLAGS
,你应该设置RUSTFLAGS
。像这样未经测试的调用:
RUSTFLAGS="-L/your_lib -I/your_include" cargo install diesel_cli
在我这边,我没有让它只与mysql客户端一起工作。我不得不安装mysql
brew install mysql
最后,重要的是你有一个mysqlclient动态库的版本。
在这里安装的地雷:
/usr/local/lib/libmysqlclient.21.dylib
/usr/local/Cellar/mysql/8.0.15/lib/libmysqlclient.21.dylib
它奏效了。