天天看點

runc 源碼編譯(基于 ubuntu 18.04)

一、基礎環境

  • Ubuntu 18.06
  • go 1.12.5

二、編譯步驟

# apt install pkg-config libseccomp-dev -y
# git clone https://github.com/opencontainers/runc.git "$GOPATH/src/github.com/opencontainers/runc"
# cd "$GOPATH/src/github.com/opencontainers/runc"
# git checkout 69663f0b
# make BUILDTAGS="seccomp apparmor selinux" static
           

編譯好的二進制檔案就位于

$GOPATH/src/github.com/opencontainers/runc/runc

三、關于 dirty 髒版本的處理

如果你對代碼進行了修改,預設編譯出的

runc

會被标記為

dirty

,類似于:

# ./runc --version
runc version 1.0.0-rc5+dev
commit: 69663f0bd4b60df09991c08812a60108003fa340-dirty
spec: 1.0.0
           

要去掉這個煩人的

dirty

标記,需要修改 Makefile,去掉那個

-dirty

--- a/Makefile
+++ b/Makefile
@@ -13,7 +13,7 @@ RUNC_IMAGE := runc_dev$(if $(GIT_BRANCH_CLEAN),:$(GIT_BRANCH_CLEAN))
 PROJECT := github.com/opencontainers/runc
 BUILDTAGS := seccomp
 COMMIT_NO := $(shell git rev-parse HEAD 2> /dev/null || true)
-COMMIT := $(if $(shell git status --porcelain --untracked-files=no),"${COMMIT_NO}-dirty","${COMMIT_NO}")
+COMMIT := $(if $(shell git status --porcelain --untracked-files=no),"${COMMIT_NO}","${COMMIT_NO}")
           

是不是豁然開朗了呢?

# ./runc --version
runc version 1.0.0-rc5+dev
commit: 69663f0bd4b60df09991c08812a60108003fa340
spec: 1.0.0

           

繼續閱讀