当前位置: 首页 > 知识库问答 >
问题:

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

邢思淼
2023-03-14

我正在尝试使用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个答案

商飞尘
2023-03-14

你的货.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

 类似资料:
  • 我有以下错误:"无法使用Gradle发行版'https://services.gradle.org/distributions/gradle-4.4-all.zip'执行构建。" 只有当我的gradle文件中有这样的内容时才会出现这种情况:“class path ' com . Android . tools . build:gradle:3 . 1 . 2 '” 如果我把它切换回:“类路径'网站

  • 我在Android Studio中构建项目时遇到了一个问题,几周前它还能正常工作,但当我今天试图运行该项目时,它失败了。下面是我得到的错误消息: org.Gradle.tooling.gradleConnectionException:无法使用分级发行版“http://services.Gradle.org/distributions/gradle-1.7-bin.zip”执行生成。:无法使用分级

  • 我想为iOS和Android构建Flutter的发布应用程序,一切都很好,并且在开发和iOS IPA版本上运行得很好,但不适用于Android 我尽量 flutter构建appbundle 但我有个问题 任务配置中发现问题:app:uploadCrashlyticsMappingFileRelease(类型为“UploadMappingFileTask”)。 为属性“googleServicesF

  • 首先,我安装并配置了Bazel,现在我可以使用该教程成功地编译和部署应用程序。 然而,我被Android Studio困住了。我安装了官方的Bazel插件,然后尝试将我的Bazel项目导入到Android studio(从构建文件导入)。我得到了同步错误: 在项目目录下找到2个目标;同步其中的2个。从项目视图目录同步目标: //src/main/java/com/example/bazel:gre

  • 问题内容: 我正在尝试使用Gradle命令行界面构建我的Android应用。我还将 GRADLE_HOME / bin 添加到环境中。首先,我使用gradle init生成了包装,gradlew在我的项目文件夹中。现在,当我使用此包装程序构建我的应用程序( ./gradlew build )或使用其任何功能时,它尝试下载gradle-2.3.zip文件并失败(以下错误消息)。我不明白的是为什么gr

  • 我正在尝试使用 maven build 作为运行配置在 eclipse 中运行cucumber测试。当我运行配置时,构建成功,但浏览器不调用。因此,测试未运行。测试被跳过,给出一个信息“没有什么可编译的 - 所有类都是最新的”。我能够通过将功能文件作为cucumber功能运行来成功运行相同的测试。 请告诉我为什么要跳过测试。也让我知道运行maven构建cucumber测试的步骤。下面是我使用的po