2017年9月19日 星期二

How to detect Linux OS vendor in Makefile or bash script? 如何在 Makefile 判斷 Linux OS 種類

寫了一個小程式, 需要在 ubuntu & CentOS 上執行, 因為這兩個OS 有些差異, 需要在程式內作一些不一樣的處理.  所以在 Makefile 加一個 OS 為何的defeine, 可讓我們在程式碼作處理.

問題是 uname 沒有 OS 是哪一種的資訊,

菇枸得知在 /etc 之下有個 release file 存放 OS 資訊, 不同 OS 有不同檔名,

例如 ubuntu 用 /etc/lsb-release, CentOS 用 /etc/centos-release

其他OS 使用檔名可在這裡找到
http://linuxmafia.com/faq/Admin/release-files.html

有了檔名, 在 Makefile  加如下列
 
ifneq ("$(wildcard /etc/lsb-release)","")
CFLAGS += -DUBUNTUOS
endif

追蹤者