LoginSignup
1
4

gcc on Alpine Linux

Last updated at Posted at 2019-06-06

Alpine Linuxでgccの最新版をビルドしてみます。

apk add --no-cache make build-base
wget https://ftp.iij.ad.jp/pub/gnu/gcc/gcc-12.1.0/gcc-13.1.0.tar.xz
tar -xvf gcc-13.1.0.tar.xz
cd gcc-13.1.0
./contrib/download_prerequisites
cd ..
mkdir objdir
cd objdir
./../gcc-13.1.0/configure --disable-multilib
make all-gcc
make all-target-libgcc
make install-gcc
make install-target-libgcc

今回は、Docker上のAlpine Linuxでビルドしました。
Dockerイメージをcommitしましょう。

C:\>docker ps -a
CONTAINER ID   IMAGE          COMMAND     CREATED       STATUS                      PORTS                    NAMES
8ea5343482a8   be2834c1f652   "/bin/sh"   4 hours ago   Exited (0) 15 seconds ago                            romantic_lehmann

C:\>docker commit 8ea5343482a8 kazu_gcc:13.1.0
sha256:c99dd5dcd3148c8c8dffddb23c3e9d71503491accba67dd67a4254ada8c6c121

コンテナIDでcommitしました。これをsaveすれば他PCでも使用できます。
作成したイメージを使って実行環境を構築します。
試すCソースは以下です。

hello.c
#include <stdio.h>

void main(void) {
  printf("Hello, world!\n");
}

これを使うためのDockerfileは以下です。

DockerfileExec
FROM kazu_gcc:13.1.0 as builder

RUN mkdir /src
COPY hello.c /src
RUN /usr/local/bin/gcc /src/hello.c -o /src/hello

FROM alpine
COPY --from=builder /src/hello /bin/
CMD ["/bin/hello"]

作成した実行イメージを起動してみます。

C:\>docker run kazu_gcc:exec
Hello, world!

C:\>

実行形式に依存している共有ライブラリは以下となります。

~ # ldd /bin/hello
        /lib/ld-musl-x86_64.so.1 (0x7fcf824b2000)
        libc.musl-x86_64.so.1 => /lib/ld-musl-x86_64.so.1 (0x7fcf824b2000)
~ #
1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4