# -*- coding: utf-8 -*-
# Author: wanlin_zhang
# Date: 2024-10-29 21:49:30
# File: t8_remove_elements_from_list.py
# Software: Visual Studio Code 1.85.1
# 从列表1~10中删除odd元素
def remove_odd_elements(list_data):
for i in list_data:
if i % 2 != 0:
list_data.remove(i)
return list_data # 返回删除odd元素后的列表, 但是这种方法会导致删除元素后,列表的长度会发生变化,导致后续元素的索引发生变化。
def remove_odd_elements_2(list_data):
return [i for i in list_data if i % 2 == 0] # 通过表达式返回删除odd元素后的列表,但是不会改变原列表的长度。
def main():
list_data = list(range(1, 11))
print(f"删除odd元素后的列表为:{remove_odd_elements_2(list_data)}")
print(f"原列表为:{list_data}")
print(f"删除odd元素后的列表为:{remove_odd_elements(list_data)}")
if __name__ == "__main__":
main()
GenUI S3 Cloud Drive
使用Rust Makepad框架以及GenUI内置组件库编写的简单 AWS S3 云盘客户端
Releases: genui_s3_cloud_drive_0.0.1_pre
关于作者
我是Will,Privoce的工程师,Privoce目前是一个以Rust为主的, 面向下一代互联网产品的创新型初创企业。 GenUI是类Vue的声明式前端框架,当前使用Makepad作为底层渲染引擎,将来它也能够使用AI生成UI
产品背景
之前当我在使用云盘时,多数接触到类似百度云盘的产品,这类产品的通病在于唯VIP服务,如果你不是VIP你将"享受"到高达128KB/S的极致享受,无论上传还是下载都会收到极大的限速。有天当我为同事传输一些训练集数据时偶然接触到亚马逊的S3云盘时,让我感受到S3的便利,但由于使用Cli作为传输工具也带来了命令行的通病,我们需要记忆很多的命令并且需要频繁查询地址(云盘Cli无法使用Tab),因此我使用我正在研发的GenUI框架构建了这个产品。
注意事项
中国大陆需要确保能够访问 AWS 服务 目前仅支持Windows系统
准备
有关安装说明,请展开适用于您的操作系统的部分。
下载AWS Cli
Windows
安装和更新要求
- 我们支持微软支持 AWS CLI 的 64 位 Windows 版本
- 安装软件的管理员权限
下载并运行适用于 Windows (64 位) 的 AWS CLI MSI 安装程序:https://awscli.amazonaws.com/AWSCLIV2.msi
或者,您可以运行 msiexec 命令来运行 MSI 安装程序。
msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi
# For various parameters that can be used with msiexec, see msiexec on the Microsoft Docs website.
# For example, you can use the /qn flag for a silent installation.
msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi /qn
Config
下载完成后需要登录AWS并获取分配的账号进行配置 查阅 Config the AWS Cli
aws configure
AWS Access Key ID [None]: YOUR ACCESS KEY ID
AWS Secret Access Key [None]: YOUR SECRET ACCESS KEY
Default region name [None]: REGION NAME
Default output format [None]: json
Features
- [x] 检查S3配置
- [x] 连接S3 Cli
- [x] 获取云盘文件,文件夹
- [x] 上传文件到云盘
- [x] 删除文件,文件夹
- [x] 分享文件,文件夹
- [x] 使用亚马逊S3 Cli
- [ ] 上传文件夹到云盘
- [ ] 创建文件
- [ ] 使用亚马逊S3 SDK
欢迎👏大家使用本产品并提出宝贵的建议帮助我进行优化,如果您对我正在构建的GenUI框架感兴趣请随时与我们进行联系。
getch
是一个在 C 语言编程中常用的函数,用于从键盘读取一个字符,但不回显到屏幕上。
在 Windows 环境下,getch
实现通常包含在 <conio.h>
头文件中。需要注意的是,getch
这个符号并非标准,标准的符号是 _getch
,虽然 getch
一般会被指向 _getch
,但你应当使用 _getch
而非 getch
。
在 Unix/Linux 环境下,没有系统提供的 getch
实现,我们可以通过以下方法实现:
#include <termio.h>
int getch(void) {
struct termios tm, tm_old;
int fd = 0, ch;
if (tcgetattr(fd, &tm) < 0) { // 保存现在的终端设置
return -1;
}
tm_old = tm;
cfmakeraw(&tm); // 更改终端为原始模式,该模式下所有的输入数据以字节处理
if (tcsetattr(fd, TCSANOW, &tm) < 0) { // 设置上更改之后的设置
return -1;
}
ch = getchar();
if (tcsetattr(fd, TCSANOW, &tm_old) < 0) { // 更改设置为最初的样子
return -1;
}
return ch;
}
其中 struct termios
,tcgetattr
,tcsetattr
,cfmakeraw
以及 getchar
的定义为:
typedef unsigned char cc_t;
typedef unsigned int speed_t;
typedef unsigned int tcflag_t;
#define NCCS 32
struct termios{
tcflag_t c_iflag; /* input mode flags */
tcflag_t c_oflag; /* output mode flags */
tcflag_t c_cflag; /* control mode flags */
tcflag_t c_lflag; /* local mode flags */
cc_t c_line; /* line discipline */
cc_t c_cc[NCCS]; /* control characters */
speed_t c_ispeed; /* input speed */
speed_t c_ospeed; /* output speed */
};
int tcgetattr(int __fd, struct termios *__termios_p);
void cfmakeraw(struct termios *__termios_p);
int tcsetattr(int __fd, int __optional_actions, const struct termios *__termios_p);
int getchar(void);
据此,我们可以通过 Rust 的 FFI 为 rust
实现一个 getch
:
#[cfg(target_os = "windows")]
mod conio {
use std::os::raw::c_int;
extern "C" {
pub fn _getch() -> c_int;
}
}
#[cfg(target_os = "linux")]
#[allow(non_camel_case_types)]
mod conio {
use std::os::raw::c_int;
type tcflag_t = ::std::os::raw::c_uint;
type speed_t = ::std::os::raw::c_uint;
type cc_t = ::std::os::raw::c_uchar;
const NCCS: usize = 32;
const TCSANOW: i32 = 0;
#[repr(C)]
#[derive(Default, Copy, Clone)]
struct termios {
c_iflag: tcflag_t,
c_oflag: tcflag_t,
c_cflag: tcflag_t,
c_lflag: tcflag_t,
c_line: cc_t,
c_cc: [cc_t; NCCS],
c_ispeed: speed_t,
c_ospeed: speed_t,
}
extern "C" {
fn tcgetattr(__fd: c_int, __termios_p: *mut termios) -> c_int;
fn tcsetattr(__fd: c_int, __optional_actions: c_int, __termios_p: *const termios) -> c_int;
fn cfmakeraw(__termios_p: *mut termios);
fn getchar() -> c_int;
}
#[allow(unused_mut, unused_assignments)]
pub fn _getch() -> c_int {
unsafe {
let mut tm: termios = Default::default();
let mut tm_old: termios = Default::default();
let fd = 0;
let mut ch: c_int;
if tcgetattr(fd, &mut tm) < 0 {
return -1;
}
tm_old = tm;
cfmakeraw(&mut tm);
if tcsetattr(fd, TCSANOW, &mut tm) < 0 {
return -1;
}
ch = getchar();
if tcsetattr(fd, TCSANOW, &mut tm_old) < 0 {
return -1;
}
ch
}
}
}
#[allow(unused_unsafe)]
fn getch() -> char {
unsafe { conio::_getch() as u8 as char }
}
#include <reg51.h>
void delay(void) { //while循环方式 unsigned char i=200; unsigned char j=200; while (i--) while(j--); /* //for循环方式 unsigned char i = 200; unsigned char j = 200; for (i=200 ;i>0;i--) for(j=200; j>0 ;j--); */ }
void main(void) { while(1) { unsigned char p = 0x01; unsigned char q; for ( q = 0 ; q < 8 ; q++) { P0 = ~(p << q); delay(); }
}
}
社會工程需要技巧和精確度。專業角支持您安全、合乎道德地開展業務。
我們的客製化服務:
深入調查:我們收集相關信息,讓您搶佔先機。 建立引人注目的個人資料:我們開發可信賴的數位身分來加強您的方法。 優化您的流程:我們自動執行重複性任務以提高效率。 專家建議:受益於我們的專業知識來完善您的策略。 為什麼選擇我們?
絕對保密:您的專案 將得到最大程度的謹慎處理。 具體結果:我們為您提供詳細的報告,幫助您做出最佳決策。 個人化解決方案:我們的服務適應您的特定需求。 準備好探索新的視角了嗎?
聯絡我們
https://t.me/Matricule02
https://mitalk.lat/proteus/
最近手头有一个视频,基本上是一个部分重复循环的,我想把循环的一段提取出来造成动态壁纸,但怎奈何不会用 pr,只能用 ffmpeg 配合 pillow 搞了……
实现的关键在于找到可以首位相接的两帧画面,这就要求两个画面有极高的相似度。判断画面相似度首先需要对图像进行量化,一般有两种方案,一种是提取特征向量,一种是计算哈希。考虑到我手头视频的特征,我选择了比较简单的哈希。
开始之前,需要安装必要的包以及 ffmpeg
,执行
pip install ffmpeg-python Pillow numpy imagehash
!Notice 简略起见,以下代码不重要部分折叠,具体实现参照文末链接
首先需要把视频分离成帧,存入数组:
def extract_frames(input_video) -> Generator[np.ndarray, None, None]:
# 一个生成器,生成每一帧的数据存入 numpy 数组
...
图像的哈希算法有多种,比如均值哈希(aHash)、感知哈希(pHash)以及差异哈希(dHash),各有优劣,但选择哪一种对接下来的算法影响不大,我这里以 pHash 为例。以上图像哈希算法在 imagehash
中均有提供,由于本篇主要讨论循环视频生成,哈希算法的具体原理就不研究了(肯定不是因为我不会)。
def generate_hashes(input_video: str) -> Generator[int, None, None]:
for frame in extract_frames(input_video):
# 将 numpy 数组转换为 PIL 图像
pil_image: ImageHash = Image.fromarray(frame)
# 生成 pHash 值
phash_value = int(str(phash(pil_image)), 16)
yield phash_value
图像哈希越相似,图像就越相似。两个哈希值的相似度可以用汉明距离表示,汉明距离表两个二进制数差异的位数,可以通过异或和中 的个数计算。
def hamming_distance(hash1: int, hash2: int) -> int:
return bin(hash1 ^ hash2).count('1')
接下来遍历每一帧的哈希找到距离最近的两帧即可。遍历过程如果有确定起始或结束帧可以直接遍历,复杂度 ;如果没有固定起始帧,根据汉明权重(也就是与 的汉明距离)排序后遍历即可,复杂度 。
最后完整代码在github gist。
适合竞赛用,应该是相关模板最简洁的之一吧,不需要的部分(参数传递、命名空间、类型别名什么的)自己根据实际情况改一改就可以了。
namespace MTX {
using i64 = int64_t;
constexpr i64 MTX_SIZE = 3;
using vec = std::array<i64, MTX_SIZE>;
using mtx = std::array<vec, MTX_SIZE>;
mtx &mul(mtx &a, const mtx &b, const i64 m = INT64_MAX) {
mtx r{};
for (int i = 0; i < MTX_SIZE; ++i)
for (int j = 0; j < MTX_SIZE; ++j)
for (int k = 0; k < MTX_SIZE; ++k)
r[i][j] = (r[i][j] + a[i][k] * b[k][j] % m) % m;
a = std::move(r);
return a;
}
mtx &dp(mtx &s, mtx& f, i64 n, const i64 m = INT64_MAX) {
while (n) {
if (n & 1) mul(s, f, m);
n >>= 1, mul(f, f, m);
}
return s;
}
} // namespace MTX
使用样例(斐波那契数列):
#include <bits/stdc++.h>
namespace MTX {
using i64 = int64_t;
constexpr i64 MTX_SIZE = 3;
using vec = std::array<i64, MTX_SIZE>;
using mtx = std::array<vec, MTX_SIZE>;
mtx &mul(mtx &a, const mtx &b, const i64 m = INT64_MAX) {
mtx r{};
for (int i = 0; i < MTX_SIZE; ++i)
for (int j = 0; j < MTX_SIZE; ++j)
for (int k = 0; k < MTX_SIZE; ++k)
r[i][j] = (r[i][j] + a[i][k] * b[k][j] % m) % m;
a = std::move(r);
return a;
}
mtx &dp(mtx &s, mtx& f, i64 n, const i64 m = INT64_MAX) {
while (n) {
if (n & 1) mul(s, f, m);
n >>= 1, mul(f, f, m);
}
return s;
}
} // namespace MTX
int main() {
std::ios::sync_with_stdio(0);
std::cin.tie(nullptr);
MTX::mtx s{(MTX::vec)
{1, 1},
{0, 0}
}, f{(MTX::vec)
{0, 1},
{1, 1}
};
MTX::i64 n;
std::cin >> n;
std::cout << MTX::dp(s, f, n - 1, 1e9 + 7)[0][0] << std::endl;
return 0;
}
⚡️ 灵动算力:为AI工作者提供短期、经济的算力
💰 比市场价低40%
⏱️ 按需租用,灵活便捷
👓 我们也在对长期租赁进行技术攻克中,做到无感迁移
了解更多:https://agile.nexmm.com
#GPU租赁 #AI计算 #省钱利器
大家好!我们最近推出了一个非常棒的共建者计划,想和朋友们分享一下。
计划亮点
-
免费获得: 一张为期一年的 4090 算力卡(市场价值 15,000+ 元)
-
适合人群: AI 产品开发者或科研计算领域从业者
-
简单门槛: 提供反馈、协助测试和适度推广
如何参与
前往详情页了解
https://www.gongjiyun.com/seed.html
注意事项
-
审核在 1-3 个工作日内完成
-
资源以平台积分形式分批发放
-
需在您的网站/应用底部添加我们的 LOGO 和链接
有任何问题,欢迎在评论区讨论。
从事 AI 开发的朋友们,不要错过这个机会哦!
nextjs 的 beta 版本一直不满意没发布 ,React Server Component 虽然能优化首次加载,但页面路由都会引入 _rsc 请求,导致卡顿(取决于网络质量),不能充分利用客户端缓存数据。
Remix 的 clientLoader 可以很好解决这个问题,兼顾 SEO 和路由体验,同时可以和 mswjs 配合,极大提高开发效率。
app store链接🔗 业余时间练手写了个键鼠录播+点击器的 mac app。 放几个促销码供 各位黑客说的水友,错过就错过了哦! WHLN4ANKHP3E FNX6TF347MH6 R7XTPHMXAX3Y
梦回 2005,当年第一个电子词典,为了通关魔塔,专门用个小本本计算怪的数值,
去年突然想玩,微信上搜了一圈,没有一个能玩下去,要么移动太慢,要么挂羊头卖狗肉,于是就想自己撸一个,
没想到撸了三个多月才出来稍微算完整的第一版,11 月提交审核了,
没没没想到,一审审了 5 个月!!! 离谱,都快忘了这件事了,月初看审过了,但是还是上不了,kao kao kao, 还要备案,那也没办法,都这么久了,还是得上,
前天终于上线了,为了能搜索到还交了 30 块保护费,oh shit
有想玩玩的朋友可以微信搜 mota
, 小程序那一栏里看到 motagame
就是了
中文名 魔塔 搜不到,因为这个名字我用不了,
编写函数,返回一个数的逆序后组成的数。在main函数中输入一个数x,通过函数调用输出它逆序后组成的数。
请问怎么才能实现在main函数中成功调用devert函数呢?我现在写完之后不知道return后面应该跟什么了。请求各位帮忙看一下,谢谢。
同理,flutter reactNative 也是一样的
devcontainer.json
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/ubuntu
{
"name": "Fei-Dev",
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
"dockerComposeFile": "../docker-dev-build/docker-compose.yml",
"service": "devcontainer",
"workspaceFolder": "/workspace",
"features": {
"ghcr.io/devcontainers/features/java:1": {},
"ghcr.io/nordcominc/devcontainer-features/android-sdk:1": {}
},
"customizations": {
"vscode": {
"extensions": [
"DavidAnson.vscode-markdownlint",
"isudox.vscode-jetbrains-keybindings",
"vscjava.vscode-gradle",
"totalcross.android-xml-editor",
"ms-azuretools.vscode-docker",
"adelphes.android-dev-ext",
"fwcd.kotlin"
]
}
},
"shutdownAction": "stopCompose",
// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],
// Use 'postCreateCommand' to run commands after the container is created.
"postCreateCommand": "adb start-server && sh gradlew build",
// "postAttachCommand": "adb connect emulator:5555"
// Configure tool-specific properties.
// "customizations": {},
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
//fixme 尝试使用vscode 用户可以访问volume
"remoteUser": "root"
}
docker-compose.yml
services:
devcontainer:
image: mcr.microsoft.com/devcontainers/base:ubuntu
command: /bin/sh -c "while sleep 1000; do :; done"
ports:
- "8080-8090"
volumes:
- ..:/workspace:cached
- gradle-cache:/root/.gradle
- top-cache:/root/.cache
emulator:
image: budtmo/docker-android:emulator_11.0
ports:
- "6080"
environment:
- EMULATOR_DEVICE=Samsung Galaxy S10
- WEB_VNC=true
devices:
- /dev/kvm
volumes:
gradle-cache:
top-cache:
标识符
483DAB9E-B587-4DAE-936C-201F5BC4BCBA
备注
Error Domain=kCFStreamErrorDomainSSL Code=-9806"(null)" UserInfo=/NSLocalizedRecoverySuggestion=Errorcode definition can be found in Apple's SecureTransport.h}
请求信息
CONNECT m.m******(手动打码).pt:443 HTTP/1.1
请求头部
Host: m.m*******.ptConnection: keep-alive
发送请求头部
未发送
服务端开始响应
未响应
请求完成2024/04/26 10:11:40.529
前些天一直在找便宜的云服务器,偶然间发现一免费的云平台,这里推荐给大家。
就是阿贝云,网站是https://www.abeiyun.com
说一下感受
1、阿贝云虽然是一小众的云平台,重在免费,该有的东西都有,还能免备案这是最舒服的。
2、使用了一天,上了项目,网速不慢。
3、唯一要指出来就是磁盘太小。
拉取了rustbuster的v3.0.3版本文件, 二进制文件无法使用, 执行结果如下:
[root_cn@archlinux target]$ ./rustbuster-v3.0.3-x86_64-unknown-linux-gnu
./rustbuster-v3.0.3-x86_64-unknown-linux-gnu: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
拉取了main源码, 想自行尝试编译, 然后卡在了openssl, 以下为报错信息:
The following warnings were emitted during compilation:
warning: openssl-sys@0.9.47: build/expando.c:4:24: error: pasting "RUST_VERSION_OPENSSL_" and "(" does not give a valid preprocessing token
warning: openssl-sys@0.9.47: 4 | #define VERSION2(n, v) RUST_VERSION_##n##_##v
warning: openssl-sys@0.9.47: | ^~~~~~~~~~~~~
warning: openssl-sys@0.9.47: build/expando.c:5:23: note: in expansion of macro ‘VERSION2’
warning: openssl-sys@0.9.47: 5 | #define VERSION(n, v) VERSION2(n, v)
warning: openssl-sys@0.9.47: | ^~~~~~~~
warning: openssl-sys@0.9.47: build/expando.c:10:1: note: in expansion of macro ‘VERSION’
warning: openssl-sys@0.9.47: 10 | VERSION(OPENSSL, OPENSSL_VERSION_NUMBER)
warning: openssl-sys@0.9.47: | ^~~~~~~
error: failed to run custom build command for `openssl-sys v0.9.47`
Caused by:
process didn't exit successfully: `/mnt/d/work/file/rust/rustbuster/target/debug/build/openssl-sys-c5a482a9e0e49574/build-script-main` (exit status: 101)
--- stdout
cargo:rustc-cfg=const_fn
cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR
X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR unset
cargo:rerun-if-env-changed=OPENSSL_LIB_DIR
OPENSSL_LIB_DIR unset
cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR
X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR unset
cargo:rerun-if-env-changed=OPENSSL_INCLUDE_DIR
OPENSSL_INCLUDE_DIR unset
cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_DIR
X86_64_UNKNOWN_LINUX_GNU_OPENSSL_DIR unset
cargo:rerun-if-env-changed=OPENSSL_DIR
OPENSSL_DIR unset
cargo:rustc-link-lib=ssl
cargo:rustc-link-lib=crypto
OPT_LEVEL = Some("0")
TARGET = Some("x86_64-unknown-linux-gnu")
HOST = Some("x86_64-unknown-linux-gnu")
CC_x86_64-unknown-linux-gnu = None
CC_x86_64_unknown_linux_gnu = None
HOST_CC = None
CC = None
CFLAGS_x86_64-unknown-linux-gnu = None
CFLAGS_x86_64_unknown_linux_gnu = None
HOST_CFLAGS = None
CFLAGS = None
CRATE_CC_NO_DEFAULTS = None
DEBUG = Some("true")
CARGO_CFG_TARGET_FEATURE = Some("fxsr,sse,sse2")
running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "-m64" "-Wall" "-Wextra" "-E" "build/expando.c"
cargo:warning=build/expando.c:4:24: error: pasting "RUST_VERSION_OPENSSL_" and "(" does not give a valid preprocessing token
cargo:warning= 4 | #define VERSION2(n, v) RUST_VERSION_##n##_##v
cargo:warning= | ^~~~~~~~~~~~~
cargo:warning=build/expando.c:5:23: note: in expansion of macro ‘VERSION2’
cargo:warning= 5 | #define VERSION(n, v) VERSION2(n, v)
cargo:warning= | ^~~~~~~~
cargo:warning=build/expando.c:10:1: note: in expansion of macro ‘VERSION’
cargo:warning= 10 | VERSION(OPENSSL, OPENSSL_VERSION_NUMBER)
cargo:warning= | ^~~~~~~
exit status: 1
--- stderr
thread 'main' panicked at /home/root_cn/.cargo/registry/src/mirrors.sjtug.sjtu.edu.cn-4f7dbcce21e258a2/openssl-sys-0.9.47/build/main.rs:126:13:
Header expansion error:
Error { kind: ToolExecError, message: "Command \"cc\" \"-O0\" \"-ffunction-sections\" \"-fdata-sections\" \"-fPIC\" \"-g\" \"-fno-omit-frame-pointer\" \"-m64\" \"-Wall\" \"-Wextra\" \"-E\" \"build/expando.c\" with args \"cc\" did not execute successfully (status code exit status: 1)." }
Failed to find OpenSSL development headers.
You can try fixing this setting the `OPENSSL_DIR` environment variable
pointing to your OpenSSL installation or installing OpenSSL headers package
specific to your distribution:
# On Ubuntu
sudo apt-get install libssl-dev
# On Arch Linux
sudo pacman -S openssl
# On Fedora
sudo dnf install openssl-devel
See rust-openssl README for more information:
https://github.com/sfackler/rust-openssl#linux
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
经过检查openssl与rust均为最新版本,
[root_cn@archlinux target]$ sudo pacman -S rust
[sudo] password for root_cn:
warning: rust-1:1.77.2-1 is up to date -- reinstalling
resolving dependencies...
looking for conflicting packages...
Package (1) Old Version New Version Net Change
extra/rust 1:1.77.2-1 1:1.77.2-1 0.00 MiB
Total Installed Size: 249.41 MiB
Net Upgrade Size: 0.00 MiB
:: Proceed with installation? [Y/n] n
[root_cn@archlinux target]$ sudo pacman -S openssl
warning: openssl-3.2.1-1 is up to date -- reinstalling
resolving dependencies...
looking for conflicting packages...
Package (1) Old Version New Version Net Change
core/openssl 3.2.1-1 3.2.1-1 0.00 MiB
Total Installed Size: 11.45 MiB
Net Upgrade Size: 0.00 MiB
:: Proceed with installation? [Y/n] n
在网上找了一下, 查到资料, 在rust-openssl的issues中提到类似报错, 得到解释如下:
If you are cross compiling to MUSL, you either need to point openssl-sys to the location that you have a copy of OpenSSL cross compiled to MUSL, or tell it to build a copy of OpenSSL itself with the vendored feature.
如果你是交叉编译到MUSL,你需要将openssl-sys指向你有一个交叉编译到MUSL的OpenSSL副本的位置,或者告诉它用vendored特性构建一个OpenSSL本身的副本。
由于不会rust, 依靠关键词"交叉编译"+"cargo"搜索到了cargo交叉编译rust程序, 顺着找到文件:
[root_cn@archlinux .cargo]$ cat ~/.cargo/config
[source.crates-io]
replace-with = 'sjtu' # 指定使用下面哪个源,修改为source.后面的内容即可
# 中国科学技术大学
[source.ustc]
registry = "https://mirrors.ustc.edu.cn/crates.io-index"
# 上海交通大学
[source.sjtu]
registry = "https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index/"
# 清华大学
[source.tuna]
registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"
# rustcc社区
[source.rustcc]
registry = "https://code.aliyun.com/rustcc/crates.io-index.git"
没有找到交叉编译的设置, 由于本人不会rust, 线索断了, 尝试向大家寻求一波帮助, 非常感谢阅读.