提问者:小点点

无法使用cargo lipo构建库--发行版


我正在尝试使用rust为ios目标制作一个跨平台库。我正在跟随本文(在iOS上构建和部署Rust库)。*注意:我遵循了相同的步骤,我的项目结构看起来也是相同的*

完成代码和项目设置后,最后一步是构建库。当我尝试使用Cargo lipo--release构建库时。它会抛出以下错误:

[ERROR cargo_lipo]找不到“my-project-name”的库目标

另外,请注意,我只能安装对两个平台的支持。(aarch64-apple-iosx86_64-apple-darwin)。我认为原因是他们放弃了对32位架构的支持。

因此,当我运行rustup target时,添加aarch64-apple-ios armv7-apple-ios armv7s-apple-ios x86_64-apple-ios i386-apple-ios

它抛出错误:错误:目标“armv7-apple-ios”的组件“rust-std”不可下载以实现通道稳定

cargo.toml

[package]
name = "rustylib"
version = "0.1.0"
edition = "2018"
crate-type = ["staticlib", "cdylib"]

rustylib.rs

#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>

char *hello(const char *to);

void hello_release(char *s);

项目结构的其余部分是通常的rust代码。

默认主机:x86_64-apple-darwin rustup主页:/users/my-username/.rustup

稳定-x86_64-Apple-Darwin

nightly-x86_64-apple-darwin(默认值)

AARCH64-Apple-IOS

x86_64-Apple-Darwin

nightly-x86_64-apple-darwin(默认值)

rustc 1.52.0-夜间(acca81892 2021-03-13)

生锈:生锈C 1.50.0(cb75ad5db 2021-02-10)

操作系统:macOS缺陷问题(11.2.3)

Xcode和命令行工具:12.4


共1个答案

匿名用户

你的货.Toml错了。

如果查看问题中链接的指南,您可以看到crate-type必须位于[lib]标记下面,如下所示:

[package]
name = "greetings"
version = "0.1.1"
authors = ["fluffyemily <fluffyemily@mozilla.com>"]
description = "Example static library project built for iOS"
publish = false

[lib]
name = "greetings"
crate-type = ["staticlib", "cdylib"]

此外,您的代码默认情况下必须在cargo/src/lib.rs中(而不是rustylib.rs)。

您可以从命令行运行cargo new rustylib--lib来创建所有样板,这样您只需要在cargo.toml[lib]部分中添加依赖项和crate-type

我认为还有一个问题:您在rustylib.rs文件中输入了C代码,它不能工作。我认为您打算做的是创建C桥,在您链接的指南中称为cargo/src/greetings.h