Dockerで開発環境:アセンブラ編

事前にpullしていたAlpine Linuxのイメージを元に、アセンブラの開発環境を作ってみる。

参考:http://dqn.sakusakutto.jp/2011/05/hello-world.html

Alpine Linuxでアセンブラをやる場合、YASMというのがあるらしい。

ちゃんとapkでインストールできるパッケージも用意されている。

とはいえ、yasmを入れても、アセンブリしてできるのはオブジェクトコードまでで、実行できるようにするには、ldコマンドでリンクしてやらんといかんらしい。で、そのldコマンドはgccを入れると使えるようになるらしい。

ということで、今回もDockerfile化してみる。

作業ディレクトリも設定した状態で始めるために、以下のようにしてみる。なお、ソース置き場のディレクトリにDockerfileもdocker-compose.yamlも置いている。

##Dockerfile

FROM alpine

WORKDIR /home/asm
RUN set -x && \
    apk update && \
    apk add --no-cache yasm nasm gcc

CMD ["/bin/sh"]

##docker-compose.yaml
version: '3'
services:

  asm:
    build: .
    container_name: asm
    volumes:
      - .:/home/asm # ローカルのソース置き場をコンテナのソース置き場としてマウントする
    tty: true

C/C++の環境とたいして違いがないが、こういった環境でもお互いに干渉しないように出来るのがDockerの便利なところ。

 

あとから気づいたが、YASMの前身に当たるNASMというのもあり、apkのパッケージもちゃんとあった。というか、x86のアセンブラといえば、コッチっぽい。(Docker Hubに公開されてるイメージもある)

 

コメントはまだありません

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA