回覆列表
  • 1 # 五四瘋哥

    想必題主的意思是android核心是基於Linux的,為什麼沒有被Linux的GPL協議傳染。最近正在關注開源許可證的問題,在網上搜了一些資料,把自己認為靠譜的答案總結一下。

    先來看一段維基百科上的話:

    “Android是執行於Linux kernel之上,但並不是GNU/Linux。因為在一般GNU/Linux裡支援的功能,Android大都沒有支援,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic取代Glibc、以Skia取代Cairo、再以opencore取代FFmpeg等等。Android為了達到商業應用,必須移除被GNU GPL授權證所約束的部分”

    我們知道在自由軟體基金會的說明裡,如果移植於Linux系統的軟體沒有呼叫Linux上GPL庫,那就不會受GPL的傳染,而Linux核心裡大多數的庫都是在LGPL協議下發布的,所以大部分在Linux系統上的軟體都不必遵守GPL協議。按照維基百科上這段解釋,Android採取的策略就是不使用Linux核心中GPL庫,而改用自己新加的庫。這裡面最重要的應該是bionic這個庫,它替代了原來Glibc的作用並在其基礎上新暴露了很多介面(儘管Glibc其實是釋出在LGPL協議下的)。透過這種方式,只有核心需要遵守GPL,而Android的其他層透過bionic(BSD協議)等與核心通訊,則避免了他們受到GPL的傳染。

    透過規避對GPL庫的呼叫來規避整個系統受到GPL傳染是Android的主要策略,但其實關於這個方式還是有爭議的,最關鍵的在於Bionic這類庫是否真的能做到隔離GPL,事實是有人指出Bionic向外暴露了一些只有核心才能呼叫的介面,本身已經受到GPL汙染了,起不到隔離的作用。但現在事實是Android的這種模式在商業上取得了巨大的成功,可能大家已經默許了Android的這種“耍賴”行為了吧。

  • 中秋節和大豐收的關聯?
  • Amore愛茉莉護髮精油好用嗎?