Site cover image

Site icon imagehtrkwn.dat

Just a htrkwn's personal hobby scrapbook.

🦀Rust学習日記:Hello world! & リンカ(Linker) - Day2

$ mkdir ~/projects
$ ls
projects
$ cd ~/projects
$ mkdir hello_world
$ cd hello_world
$ touch main.rs
$ vi main.rs
$ cat main.rs
fn main() {
    // 世界よ、こんにちは
    println!("Hello, world!");
}

$ rustc main.rs
error: linker `cc` not found
  |
  = note: No such file or directory (os error 2)

error: aborting due to previous error

Linker(build-essential)のインストール

前回の続きでHello Worldしていこうとドキュメント見ながら進めたら、linkerがなくてコンパイルできんぞと怒られました。なので、build-essentialを入れます(他にgcc, clang でもいい?)

$ sudo apt install build-essential

すると rustc main.rs が通りました。

Hello, world!

$ rustc main.rs
$ ls
main  main.rs
$ ./main
Hello, world!

Hello, world! できました。

build-essentialインストール時のパッケージ(Ubuntu)

https://packages.ubuntu.com/jammy/build-essential

$ sudo apt install build-essential
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  bzip2 cpp cpp-11 dpkg-dev fakeroot fontconfig-config fonts-dejavu-core g++ g++-11 gcc gcc-11 gcc-11-base
  libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan6 libatomic1 libc-dev-bin
  libc-devtools libc6-dev libcc1-0 libcrypt-dev libdeflate0 libdpkg-perl libfakeroot libfile-fcntllock-perl
  libfontconfig1 libfreetype6 libgcc-11-dev libgd3 libgomp1 libisl23 libitm1 libjbig0 libjpeg-turbo8 libjpeg8 liblsan0
  libmpc3 libnsl-dev libquadmath0 libstdc++-11-dev libtiff5 libtirpc-dev libtsan0 libubsan1 libwebp7 libxpm4
  linux-libc-dev lto-disabled-list make manpages-dev rpcsvc-proto
提案パッケージ:
  bzip2-doc cpp-doc gcc-11-locales debian-keyring g++-multilib g++-11-multilib gcc-11-doc gcc-multilib autoconf
  automake libtool flex bison gdb gcc-doc gcc-11-multilib glibc-doc bzr libgd-tools libstdc++-11-doc make-doc
以下のパッケージが新たにインストールされます:
  build-essential bzip2 cpp cpp-11 dpkg-dev fakeroot fontconfig-config fonts-dejavu-core g++ g++-11 gcc gcc-11
  gcc-11-base libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan6 libatomic1
  libc-dev-bin libc-devtools libc6-dev libcc1-0 libcrypt-dev libdeflate0 libdpkg-perl libfakeroot
  libfile-fcntllock-perl libfontconfig1 libfreetype6 libgcc-11-dev libgd3 libgomp1 libisl23 libitm1 libjbig0
  libjpeg-turbo8 libjpeg8 liblsan0 libmpc3 libnsl-dev libquadmath0 libstdc++-11-dev libtiff5 libtirpc-dev libtsan0
  libubsan1 libwebp7 libxpm4 linux-libc-dev lto-disabled-list make manpages-dev rpcsvc-proto
アップグレード: 0 個、新規インストール: 53 個、削除: 0 個、保留: 2 個。
64.2 MB のアーカイブを取得する必要があります。

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.3 LTS
Release:        22.04
Codename:       jammy

$ apt show build-essential
Package: build-essential
Version: 12.9ubuntu3
Priority: optional
Build-Essential: yes
Section: devel
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Matthias Klose <doko@debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 21.5 kB
Depends: libc6-dev | libc-dev, gcc (>= 4:10.2), g++ (>= 4:10.2), make, dpkg-dev (>= 1.17.11)
Task: ubuntustudio-video, ubuntu-mate-core, ubuntu-mate-desktop
Download-Size: 4,744 B
APT-Manual-Installed: yes
APT-Sources: http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages
Description: build-essential なパッケージの一覧情報
 Debian パッケージを構築するつもりがないのであれば、本パッケージは不要です。 1.14.18 以降の dpkg では、Debian
 パッケージの構築に本パッケージは必須です。
 .
 本パッケージには、Debian パッケージの構築に必須であるとされるパッケージ
 の一覧情報が含まれています。本パッケージはこの一覧にある各種パッケージに 依存もしているので、build-essential
 な各種パッケージを簡単にインストール できます。
 .
 本パッケージがインストールされていれば、特定のパッケージを構築する際に は、そのパッケージが構築にあたって依存しているという指定のあるパッケー
 ジをインストールするだけで構いません。逆に、作成しているパッケージの構 築に依存しているパッケージを判断する際に、本パッケージが依存する各種パッ
 ケージは常に除外して構いません。
 .
 本パッケージは、どのパッケージが build-essential であるかの定義は_行い ません_。実際の定義は Debian
 ポリシーマニュアルにあります。本パッケー ジは一覧情報を提供するだけですが、ほとんどの人にはこれで充分です。
 本パッケージとマニュアルが一致しない場合に正しいのは、マニュアルになり ます。