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 をメモ
3. docker runする
ローカルでvscodeでファイルを更新して、gccのbuildだけubuntuでやりたいという甘え(vimとか使わない的な)なので、ローカルのディレクトリをマウントして起動します。
$ docker run -it -v <host側のフルパス>:/work_dir <image_id> bash
一応、gcc -vコマンドでinstallがうまく行っているか確認
終わりに
これでいったんubuntuっぽい環境を立てることができたので限界まで進めてみます。