1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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-14.1.0/gcc-14.1.0.tar.xz
tar -xvf gcc-14.1.0.tar.xz
cd gcc-14.1.0
./contrib/download_prerequisites
cd ..
mkdir objdir
cd objdir
./../gcc-14.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
08deda41ee8b   f386d2e32cb3   "sh"                      About an hour ago   Exited (0) 12 seconds ago                                                                  epic_allen

C:\>docker commit 08deda41ee8b kazu_gcc:14.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:14.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 (0x7fe5bc305000)
        libc.musl-x86_64.so.1 => /lib/ld-musl-x86_64.so.1 (0x7fe5bc305000)
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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?