File tree Expand file tree Collapse file tree 6 files changed +77
-9
lines changed Expand file tree Collapse file tree 6 files changed +77
-9
lines changed Original file line number Diff line number Diff line change 27
27
- [ Rustツールチェインのインストール] ( ./atcoder-env/installing-rust-toolchain.md )
28
28
- [ クレートのコンパイルとインストール] ( ./atcoder-env/installing-rust-crates.md )
29
29
- [ クレート検索パス生成ツールのインストール] ( ./atcoder-env/installing-rustc-dep-option-generator.md ) )
30
- - [ コンパイルコマンドと実行コマンド (TODO) ] ( ./atcoder-env/compiling-and-running-program.md )
30
+ - [ コンパイルコマンドと実行コマンド] ( ./atcoder-env/compiling-and-running-program.md )
31
31
- [ コントリビュータ (TODO)] ( ./contributors.md )
Original file line number Diff line number Diff line change 2
2
3
3
# コンパイルコマンドと実行コマンド
4
4
5
- ** TODO ** このページは書きかけです 。
5
+ このページではジャッジサーバでユーザプログラムをコンパイルし、実行するためのコマンドを説明します 。
6
6
7
7
8
- ## コンパイルオプションについて
8
+ ## ファイルレイアウトとコンパイルの流れ
9
+
10
+ 選手がRustプログラムを提出すると、その内容がジャッジサーバ上のファイルシステムに書き出されます。
11
+ ジャッジサーバがどのような設計になっているかわからないので、ここでは仮にLinuxユーザのホームディレクトリ配下に` WORKAREA ` という作業用の一時ディレクトリができるものとします。
12
+
13
+ Rustプログラムは` WORKAREA ` の` main.rs ` に書き出すようにジャッジサーバを設定してください。
14
+
15
+ ``` console
16
+ $HOME # ユーザのホームディレクトリ
17
+ └-- WORKAREA # ジャッジ用の一時ディレクトリ
18
+ └-- main.rs # ユーザプログラム(提出されたプログラム)のソースコード
19
+ ```
20
+
21
+ ` WORKAREA ` に` cd ` で移動して、後述のコンパイルコマンドを実行します。
22
+ すると以下のことが行われ` main ` という名の実行可能ファイル(バイナリ)が生成されます。
23
+
24
+ 1 . プログラムがアセンブリコードに変換されオブジェクトファイルが作られる
25
+ 1 . オブジェクトファイルがRustの標準ライブラリや` ${RUST_MOME}/lib/target/release/deps ` 配下に作成しておいた` rlib ` とリンクされる
26
+
27
+ ``` console
28
+ $HOME
29
+ └-- WORKAREA
30
+ |-- main.rs
31
+ └-- main # コンパイルとリンクの成果物。実行可能ファイル(バイナリ)
32
+ ```
33
+
34
+
35
+ ## コンパイルコマンド
36
+
37
+ ツールチェインのインストールのページで説明したように、コンパイルを実行するシェルに以下の環境変数が設定されている必要があります。
38
+
39
+ ``` console
40
+ $ echo $RUST_HOME
41
+ /usr/local/lib/rust
42
+
43
+ $ echo $RUSTUP_HOME
44
+ /usr/local/lib/rust/rustup
45
+
46
+ $ echo $CARGO_HOME
47
+ /usr/local/lib/rust/cargo
48
+
49
+ $ echo $PATH
50
+ ... /usr/local/lib/rust/cargo/bin; ...
51
+ ```
52
+
53
+ コンパイルコマンドは以下のとおりです。
54
+
55
+ ``` console
56
+ $ cd ${HOME} /WORKAREA
57
+ $ RUST_LIB=${RUST_HOME} /lib
58
+ $ rustc --edition=2018 -C opt-level=3 \
59
+ $(rustc-dep-option-generator ${RUST_LIB}/Cargo.toml ${RUST_LIB}/target/release/deps) \
60
+ main.rs
61
+ ```
62
+
63
+ これにより` ${HOME}/WORKAREA ` ディレクトリに` main ` という名のバイナリが生成されます。
64
+
65
+
66
+ ### コンパイルオプションについて
9
67
10
68
** TODO**
69
+
70
+
71
+ ## 実行コマンド
72
+
73
+ バイナリを実行するコマンドは以下のとおりです。
74
+
75
+ ``` console
76
+ $ cd ${HOME} /WORKAREA
77
+ $ ./main < 入力データファイル
78
+ ```
Original file line number Diff line number Diff line change 2
2
3
3
# クレートのコンパイルとインストール
4
4
5
- 本ページではAtCoderのジャッジサーバにRustの外部ライブラリであるクレートをインストールする手順を説明します 。
5
+ このページではAtCoderのジャッジサーバにRustの外部ライブラリであるクレートをインストールする手順を説明します 。
6
6
7
7
8
8
## インストールするクレートについて
@@ -82,7 +82,7 @@ $RUST_HOME (/usr/local/lib/rust)
82
82
83
83
そしてジャッジの際には、` cargo ` を使用せず、` rustc ` に適切なオプション(ライブラリ検索パスなど)を与えて実行することで、事前にコンパイルしておいた` rlib ` ファイルとリンクさせます。
84
84
85
- ** AtCoderジャッジサーバでのファイルレイアウト(ジャッジの際に作成する )**
85
+ ** AtCoderジャッジサーバでのファイルレイアウト(ジャッジの際に作成するもの )**
86
86
87
87
``` console
88
88
$HOME # ユーザのホームディレクトリ
Original file line number Diff line number Diff line change 2
2
3
3
# Rustツールチェインのインストール
4
4
5
- 本ページではAtCoderのジャッジサーバにRustツールチェインをインストールする手順を説明します 。
5
+ このページではAtCoderのジャッジサーバにRustツールチェインをインストールする手順を説明します 。
6
6
7
7
8
8
## Rustバージョン
Original file line number Diff line number Diff line change 6
6
7
7
> ジャッジの際には、` cargo ` を使用せず、` rustc ` に適切なオプション(ライブラリ検索パスなど)を与えて実行することで、事前にコンパイルしておいた` rlib ` ファイルとリンクさせます。
8
8
9
- 本ページではこの ` rustc ` のコマンドライン・オプションを生成するツールである` rustc-dep-option-generator ` のインストール手順を説明します。
9
+ このページでは ` rustc ` のコマンドライン・オプションを生成するツールである` rustc-dep-option-generator ` のインストール手順を説明します。
10
10
このツールはRustで書かれています。
11
11
12
12
@@ -68,7 +68,7 @@ $ which rustc-dep-option-generator
68
68
$ echo $RUST_HOME
69
69
/usr/local/lib/rust
70
70
71
- $ export RUST_LIB=${RUST_HOME} /lib
71
+ $ RUST_LIB=${RUST_HOME} /lib
72
72
$ rustc-dep-option-generator ${RUST_LIB} /Cargo.toml ${RUST_LIB} /target/release/deps
73
73
--extern arrayvec=/usr/local/lib/rust/lib/target/release/deps/libarrayvec-cc9c39e9e371e142.rlib
74
74
--extern hashbrown=/usr/local/lib/rust/lib/target/release/deps/libhashbrown-106405935e6124e3.rlib
Original file line number Diff line number Diff line change 6
6
7
7
## 用語
8
8
9
- 本章で用いる用語には以下のものがあります。
9
+ まずは用語の整理です。 本章で用いる用語には以下のものがあります。
10
10
11
11
- ** ユーザプログラム**
12
12
- 選手が提出したプログラムのこと
You can’t perform that action at this time.
0 commit comments