引
最近在使用 Rust 语言开发的时候需要用到 OpenCV 库,结果配置的时候遇到了一些问题,便记录一下。
安装
Rust 的 OpenCV 库依赖了 Clang 作为编译器,所以使用前需要先安装 Clang :
sudo apt update
sudo apt install -y libopencv-dev clang libclang-dev
然后在项目的 Cargo.toml
中添加依赖:
[dependencies]
opencv = { version = "*", features = ["clang-runtime"] }
处理链接库问题
如果就这样的话,我们在编译的时候会得到这样的报错:
fatal error: 'memory' file not found
这是因为 Clang 在编译的时候没有把 C++ 的头文件路径添加到编译器的搜索路径中。我们可以通过设置环境变量 CPLUS_INCLUDE_PATH
来解决这个问题。在 ~/.bashrc
中添加以下内容:
export CPLUS_INCLUDE_PATH=/usr/include/c++/11:/usr/include/x86_64-linux-gnu/c++/11
当然,在 aarch64
的系统上就需要添加:
export CPLUS_INCLUDE_PATH=/usr/include/c++/11:/usr/include/aarch64-linux-gnu/c++/11
这样就可以正常编译了。
但是 VSCode 中的 Rust LSP 依然会报错,提示找不到头文件。我们可以通过在 settings.json
中添加以下内容来解决这个问题:
{
"rust-analyzer.server.extraEnv": {
"CPLUS_INCLUDE_PATH": "${env:CPLUS_INCLUDE_PATH}:/usr/include/c++/11:/usr/include/${arch}/c++/11"
}
}
然后就完全正常了。
结语
以上就是在 Ubuntu 22.04 上使用 Rust 调用 OpenCV 库时需要注意的一些细节。希望对你有所帮助。