intent

intent的blog

🚴自行车骑的最远的全栈工程师
github

Rustのインストール/更新/パッケージ化

Rust - インストール / パッケージング#

インストール#

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  • cargo のソースを変更
vi $HOME/.cargo/config

内容

[source.crates-io]
replace-with = 'ustc'

[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index"

Nightly#

# 以下のコマンドでrustcのnightlyバージョンをインストールし、そのバージョンをrustcのデフォルトバージョンに設定できます。
rustup install nightly
rustup default nightly

その他#

# 利用可能なプラットフォームを表示
rustc --print target-list | pr -tw100 --columns 3

# インストール済みを表示
rustup target list | grep installed

# x86_64-unknown-linux-muslをインストール
rustup target add x86_64-unknown-linux-musl

更新#

 rustup update

パッケージング#

依存関係の確認#

macOS の場合、依存関係を確認するには

otool -L target/release/workout

Linux の場合、依存関係を確認するには

ldd target/release/バイナリファイル

静的ファイル#

またはcargo install cross --git https://github.com/cross-rs/crossを使用することもできます。

静的ファイルのパッケージングに問題が発生する場合は、最終的な解決策として Docker のパッケージングを使用してください!

問題#

ファイルロックのブロック待ち...#

rm -rf ~/.cargo/.package-cache

Windows のパッケージング#

質問: msvc のターゲットは msvc リンカに依存していますが、link.exeが見つかりませんでした。

解決策:

C:\Users\intent\.cargo\bin\rustup uninstall toolchain stable-x86_64-pc-windows-msvc
C:\Users\intent\.cargo\bin\rustup toolchain install stable-x86_64-pc-windows-gnu
C:\Users\intent\.cargo\bin\rustup default stable-x86_64-pc-windows-gnu

または VS Studio をインストールしてください!

質問: Internal error occurred: Failed to find tool. Is musl-gcc installed?#

回答:これは musl がインストールされていないためです。

git clone https://github.com/richfelker/musl-cross-make.git --depth=1
cd musl-cross-make && TARGET=x86_64-linux-musl make -j8
cd build/local/x86_64-linux-musl/ && make install

# PATH変数を設定する
# rust x86_64-linux-musl
export PATH=/mnt/dev/git/rust/musl-cross-make/build/local/x86_64-linux-musl/output/bin:$PATH

質問: error: failed to run custom build command for openssl-sys v0.9.72#

Ubuntu の場合

 sudo apt install pkg-config
 sudo apt install libudev-dev
 sudo apt install librust-openssl-sys-dev
 sudo apt install libssl-dev

Gentoo の場合

OPENSSL_LIB_DIR=/usr/lib64 OPENSSL_INCLUDE_DIR=/usr/include TARGET_CC=x86_64-linux-musl-gcc cargo build --release --target=x86_64-unknown-linux-musl

質問: reqwest の blocking::Client を blocking::ClientBuilder からビルドすると Segmentation fault が発生する#

# Segmentation fault when building a blocking::Client from a blocking::ClientBuilder

OPENSSL_STATIC=true OPENSSL_DIR=/mnt/dev/git/c/openssl-OpenSSL_1_1_1f/musl TARGET_CC=x86_64-linux-musl-gcc cargo build --release --target=x86_64-unknown-linux-musl

質問: error: failed to run custom build command for `ring v0.16.20`#

sudo apt install musl-tools

コンパイルが遅い場合、リンカーを llvm に変更する#

https://stackoverflow.com/questions/57812916/how-do-i-change-the-default-rustc-cargo-linker

参考#

Rust 交叉编译相关总结 - Silentdoer - 博客园

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。