无法使用 cairo-rs 链接程序:“与 `cc` 链接失败”和“未找到 -lgobject-2.0 的库”

Dav*_*van 2 rust rust-cargo

我正在按照本教程使用 cairo-rs 为图像绘制一些内容。当我运行我的代码时,我得到一个很长的错误。重要的部分似乎是:

linking with "cc" failed: exit code: 1
Run Code Online (Sandbox Code Playgroud)

ld: library not found for -lgobject-2.0 
clang: error: linker command failed with exit code 1
Run Code Online (Sandbox Code Playgroud)

我通过 MacPorts 安装了 Cairo,所以这应该不是问题。我从教程中复制了 Cargo.toml 文件,除了最新的包:

[dependencies]
png = "0.12.0"
cairo-rs = {version = "0.4.1", features = ["png"]}
Run Code Online (Sandbox Code Playgroud)

我也尝试了教程中列出的版本,但我得到了同样的错误。

Rust 问题 18610似乎有类似的错误,并建议安装libc-dev. 我不知道那是什么或为什么它会解决任何问题。

我在某处看到它可能是命名冲突,所以我更改了我的项目名称以免冲突,但它没有帮助。

细节

  • 我在稳定的 Rust 上,我什至重新安装了它。
  • MacOS High Sierra,版本 10.13.3 (17D47)

完全错误

[dependencies]
png = "0.12.0"
cairo-rs = {version = "0.4.1", features = ["png"]}
Run Code Online (Sandbox Code Playgroud)

Cargo.toml

[package]
name = "using_cairo"
version = "0.1.0"
authors = ["davidsullivan <touisbetterthanpi@gmail.com>"]

[dependencies]
png = "0.12.0"
cairo-rs = {version = "0.4.1", features = ["png"]}
Run Code Online (Sandbox Code Playgroud)

主文件

extern crate cairo;

use cairo::{Context, Format, ImageSurface};
use std::fs::File;

fn main() {
    let surface = ImageSurface::create(Format::ARgb32, 600, 600).expect("could not create surface");
    let context = Context::new(&surface);

    context.set_source_rgb(1.0, 0.0, 0.0);
    context.paint();

    let mut file = File::create("output.png").expect("Could not create file");

    surface
        .write_to_png(&mut file)
        .expect("could not write to file");
}
Run Code Online (Sandbox Code Playgroud)

Fre*_*ios 5

您需要安装适当的开发库glibcairo

如果您的操作系统与 Debian 相关,请键入apt install libglib2.0-dev.

如果您使用的是 macOS 和 Homebrew,请输入brew install glibthen brew install cairo