from 30

30歳からwebエンジニアになったけど、思ったよりも苦しいので、その苦闘の記録をば

ubuntu on dockerでC言語のbuildができるように環境整備

経緯

アルゴリズムとデータ構造を学ぶために、C/C++をいじっていたら、

もっと低いレイヤーまで見て行って、最終的に0と1の世界まで実感できるようになりたいと考えるようになった。(絵に描いたような脱線である)

私の普段の仕事において、プログラムを動かすのは開発時は自分のmacの上でだし、本番はだいたいlambdaである。

でもいうなれば、lambdaだって世界のどこかにあるLinuxサーバーの上で動いているdocker環境なのだ。

と考えれば、ここいらで視野を広げる意味でもLinuxに思いを馳せてみるのもいいかもしれない。

読んでみる書籍

『ふつうのLinuxプログラミング 第2版 Linuxの仕組みから学べるgccプログラミングの王道 』(青木峰郎著) を読んでみようと思う。

冒頭でできるだけ実機で動かして ... というような表記があるが、当面はmac osでいけるだろと思っていたが、

linuxの学習においては、けっこうシステムコールやらライブラリやらでrootあたりのディレクトリ構造が重要だったりするみたい。

ということで、ひとまずはubuntu on dockerで環境設定してみたのでそのメモをば。(dockerでもなお、いきづまるようならそのとき考える)

前提

やったこと

1. Dockerfileを書く

今いるディレクトリをdocker上のワーキングディレクトリにする前提。

他のディレクトリを連携したい場合は、ADD のところを書き換える。

FROM ubuntu:latest
RUN mkdir /work_dir
ADD ./ /work_dir
WORKDIR /work_dir

RUN apt-get update
RUN apt-get -y install sudo && \
    sudo apt-get -y install build-essential && \
    sudo apt-get -y install vim && \
    sudo apt-get -y install man

2. Docker Imageをbuildする

Dockerfileがあるディレクトリをカレントディレクトリにする。

$ docker build -t ubuntu_practice .

もろもろのインストールが終わると、以下のようにSuccessfully builtの表示が出るのでimage id をメモ

f:id:kohski:20201105093011p:plain

3. docker runする

ローカルでvscodeでファイルを更新して、gccのbuildだけubuntuでやりたいという甘え(vimとか使わない的な)なので、ローカルのディレクトリをマウントして起動します。

$ docker run -it -v <host側のフルパス>:/work_dir <image_id> bash

一応、gcc -vコマンドでinstallがうまく行っているか確認

終わりに

これでいったんubuntuっぽい環境を立てることができたので限界まで進めてみます。