本文作者:ptiyny

linux内核源码如何学习 linux内核源码剖析

ptiyny 08-16 11
linux内核源码如何学习 linux内核源码剖析摘要: 大家好,今天小编关注到一个比较有意思的话题,就是关于linux内核源码如何学习的问题,于是小编就整理了3个相关介绍linux内核源码如何学习的解答,让我们一起看看吧。linux内核...

大家好,今天小关注到一个比较有意思的话题,就是关于linux内核源码如何学习的问题,于是小编就整了3个相关介绍Linux内核源码如何学习的解答,让我们一起看看吧。

linux内核源码如何学习 linux内核源码剖析
(图片来源网络,侵删)

linux内核源码是什么语

Linux内核源码是用C语的。C语言是一高级编程语言,被广泛应用于系统编、嵌入式开发、游戏开发等领域。Linux内核源码被设计高效、可移植、可维护的,因此选择C语言作为开发语言是理所当然的选择。此外,Linux内核也包含了一些汇编代码,用于处理一些底层的硬件操作。总之,Linux内核源码的编写语言是C语言。

Linux Kernel (Linux内核)怎么安装

1、下载新内核源码:到官网www.kernel.org,下载最新版本linux内核,保存到/usr/src/kernels目录,大约54MB。

2、#cd/usr/src/kernels

3、#tarjvxflinux-2.6.31.5.tar.bz2

linux内核源码如何学习 linux内核源码剖析
(图片来源网络,侵删)

4、进入系统原内核目录,把其中的隐藏文件.config***到新内核目录中。

5、cd进入新内核目录,然后行#makeoldconfig 此时所有提示均按回车,选项提示都默认。

6、#makexconfig此时弹出一个内核配置窗口,里面全是英文,我看不懂,干脆就直接把这个窗口关掉,继续往下做。

7、#makebzImage&&makemodules&&makemodules_install&&makeinstall第七步编译时间比较长,要30到50分钟不等,要看机器情况了。

linux内核源码如何学习 linux内核源码剖析
(图片来源网络,侵删)

8、#uname-r查看内核版本,完上面步骤后就可以重启系统了,启动时会在GRUB菜单里出现新内核选项了。 此方法安装新内核后同时也会保留旧内核,启动时,可以在新老内核间选择,相当的实用

跑在Linux上的程序必须开源吗?

不是,只要能想办法绕过GPL就可以不开源。比如谷歌在安卓用中间层隔离内核,中间层开源,上面的驱动就不用开源了。应用层要自己写libc库,否则是绕不过,安卓、openwrt都用自己的libc,所以并不需要遵循GPL公开源码。

GNU计划是提倡开源的,没有强制性,其实linux也是GNU计划中的众多软件中的一个软件。开源有几种形势开源,二进制码开源,汇编语言开源等,源程序语言开源等,如果是二进制码开源的话,再通过某些手加工,就算反编译也得不到源程序。如果想分享的话,一般会以源程序的形势来开源。

对于开源就不得不提一下GPL协议,GPL协议就是GNU计划提出的开源协议。linux软件分为应用软件和系统软件,应用软件可能开源限制的不多,但是系统软件就要遵循GPL(开源)协议了,例如写linux驱动程序要加一句MODULE_LICENSE("GPL");--模块许可证声明为GPL。即此驱动程序是以GPL协议开源的。

linux内核及众多软件采用的是gpl授权协议。gpl协议规定如果你在软件中包含了gpl授权的源代码或者调用了gpl协议的二进制库文件时就强制继承了gpl协议。根据gpl协议必须承担开源义务(gpl2.0允许自用不公开可以不开源,3.0自用也要开源)。

在linux平台上编写软件是可以不继承gpl协议的。因为你可以不调用那些gpl协议的库文件,linux下有大量的lgpl协议的底层库文件。lgpl协议规定如果以动态链接的方式使用是可以不继承lgpl协议的,也就可以不开源。

依赖gpl协议的linux内核的库文件为什么可以不继承gpl协议呢?linux内核的原作者linus解释过,使用系统调用的方式调用内核功能不算包含源码,也不算调用库文件,只算是使用内核。使用gpl软件不用继承gpl协议。

话虽如此,但linux下大量的现成软件是gpl的,如果要在linux下编一个软件除非功能很简单,否则难免会调用到一些gpl软件,除非不用那些现成软件全部自己重新写过。那样会花费大量时间、精力。

到此,以上就是小编对于linux内核源码如何学习的问题就介绍到这了,希望介绍关于linux内核源码如何学习的3点解答对大家有用。

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享