Mendeteksi apakah itu Ubuntu Linux OS di Makefile

13

Saya ingin membuat makefile yang akan mengkompilasi objek saya dan menamainya menurut distro Linux (misalnya Suse, RedHat, atau Ubuntu). Bagaimana saya bisa mendeteksi apakah OS itu Ubuntu atau tidak?

RRR
sumber
berhasil? (karena Anda menghapus komentar Anda: D)
Rinzwind
ya, saya mengubah var OS menjadi "shell lsb_release -si" dan sekarang berfungsi dengan baik :). Terima kasih atas jawaban anda!
RRR
+1 untuk judul lucu. (petunjuk: Makefile dan Make file berarti hal yang sama sekali berbeda.)
Mahesh

Jawaban:

19

Kami menggunakan cat /etc/lsb-releaseuntuk mengidentifikasi rilis Ubuntu:

sh-3.2$  cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.04
DISTRIB_CODENAME=hardy
DISTRIB_DESCRIPTION="Ubuntu 8.04.4 LTS"

Untuk rilis lain mungkin

ls /etc/*release

Gentoo, RedHat, Arch & SuSE semuanya memiliki file rilis: http://linuxmafia.com/faq/Admin/release-files.html Ini adalah skrip lengkap di tautan;)


Contoh kode untuk sistem operasi, arsitektur, dan versi untuk sistem tipe Ubuntu:

OS=$(shell lsb_release -si)
ARCH=$(shell uname -m | sed 's/x86_//;s/i[3-6]86/32/')
VER=$(shell lsb_release -sr)
Rinzwind
sumber