Linux是一款开源操作系统,其源代码也是开源的。如果你想了解Linux的底层实现,或者想为Linux做出贡献,那么获取Linux源码绝对是必不可少的步骤。但对于没有下载过Linux源码的人来说,可能并不知道该怎么下载,下面我们来介绍一下获取Linux源码的方法。
创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站制作、成都网站设计、岑溪网络推广、微信小程序定制开发、岑溪网络营销、岑溪企业策划、岑溪品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供岑溪建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com
方法一:通过官方网站下载
官方网站是获取Linux源码最合适的地方。Linux的开发者会将Linux的最新源码上传到官方网站,并提供下载。在Linux官网上,你可以找到所有主流Linux发行版的源码。为了找到需要的版本的源码,你需要知道你的版本号和架构名字。Linux的版本号包括内核版本和发行版版本,一般都标识在发行版的名称中。例如,Ubuntu 18.04的内核版本是4.15.0-29-generic,发行版版本是18.04.1。
下载的步骤如下:
1. 找到官方网站:https://www.kernel.org/
2. 点击“Download”选项,可以看到多个版本的Linux内核源码,找到对应的版本。
3. 下载对应的tar.gz文件,这个文件包括了Linux的全部源码。
方法二:通过Git下载
Git是一款很流行的版本控制软件,也可以用来下载Linux源码。Git下载Linux源码的好处是可以进行增量式下载,也就是只下载更改过的代码,避免一次性下载全部代码所需的时间。以下是获取Linux源码的步骤:
1. 找到官方仓库:https://git.kernel.org/
2. 在该仓库的页面上,你可以找到Linux内核的Git地址,例如https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git。
3. 在终端或命令提示符中,输入以下命令,将源码库克隆到本地:
“`
git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
“`
这会将内核源码克隆到当前目录中的linux文件夹中。
不同版本的Linux内核有不同的Git地址,如果你想下载特定版本的内核源码,请通过Google搜索或其他方式找到正确的仓库地址。
方法三:通过发行版下载
Linux内核源码也可以从发行版的仓库下载。发行版提供的源码一般已经经过了调整和优化,可以直接编译运行,但是可能不是最新的版本。以下是通过发行版下载Linux源码的步骤:
1. 打开终端或命令提示符,输入以下命令,查找发行版的源码包:
“`
apt-cache search linux-source
“`
(注:这里以Debian/Ubuntu为例)
2. 选择需要的版本号和架构名,然后下载相应的源码包:
“`
sudo apt-get install linux-source-4.15.0
“`
这会将内核源码包下载到当前目录中。
以上三种方法都可以帮助你获取到Linux内核源码,选择哪一种方法取决于你的需求和习惯。请注意,Linux内核源码包比较大,通常在几百MB左右,因此下载过程可能需要一些时间,耐心等待即可。获取到源码后,你可以开始深入学习Linux内核的实现,或者为Linux开发做出贡献。
成都网站建设公司-创新互联,建站经验丰富以策略为先导10多年以来专注数字化网站建设,提供企业网站建设,高端网站设计,响应式网站制作,设计师量身打造品牌风格,热线:028-86922220Linux是一个开放的,自由的类Unix操作系统,它的源代码是公开的, 各个版本的Linux,包括从内核到许许多多的应用程序的源代码, 以及可执行文件都可以免费从互联网上下载。
你也可以通过光盘得到Linux系统,和一般的软件不同的是, 你可以合法的和你的朋友分享Linux光盘。很显然Linux光盘的价格不会很高, 之一,因为你可以免费从网上下载;第二,你可以和你的朋友合伙凑钱买一套Linux光盘, 再和你的朋友分享使用。
Linux和一般的软件不同,是可以和你的朋友分享的。 举个例子来说:
如果朋友家有张非常漂亮的窗子,但是这窗子是95牌的, 那么你仿制是违法的,如果这窗子是X牌的,或者说牌子是GPL, 那么你仿制就不违法。如果你不想违法,但又想要漂亮的窗子, 答案是选择自由软件。选择Linux。
Linux准确的说,是一个系统内核,它是最初在91年, 由芬兰的了不起的学生Linus Torvalds发起, 接着又有全世界的志愿者加入进来开发的。
现在有一些软件公司在做Linux的生意, 著名的有RedHat,SuSE以及Caldera等等, 这些公司发布自己的基于Linux内核的一整套的Linux系统: 这些整套的系统通常包括有:一个C语言及C++编译器,Perl脚本解释程序, 外壳Shell,图形用户界面X窗口系统,包括有X Server以及众多的应用程序等等。
这些整套的Linux系统按照习惯叫做Linux发布(distribution)。 目前使用最广泛的Linux发布是RedHat公司的RedHat Linux。 以前使用广泛的Slackware,现在也还有许多人在使用, 我自己的之一个Linux系统就是Slackware,现在我玩的是Debian, Debian和其他的Linux发布的不同之处在于:Debian是完全由志愿者开发的, 不像RedHat和SuSE,是由软件公司所支持的。
RedHat是使用最广泛的Linux发布,并且RedHat公司现在得到了Netscape, 以及Intel的支持,前景看好,根据一般的看法Redhat也是最容易上手的Linux发布。
SLackware和RedHat相比要稍微复杂一些,这主要是指软件的安装方面, 由于RedHat使用rpm打包系统,安装新软件简单到只要一行命令即可。 而Slackware往往要从源代码重新编译,稍微费事一些。
SuSE也是基于rpm打包系统,SuSE的特别之处在于它对X窗口系统的支持非常好, SuSE的吉祥物是一只绿色的蜥蜴,非常可爱。
Debian基于自己的Deb格式的打包系统,但是它也可以安装rpm软件包。
Linux可以运行在DEC公司的Alpha机上,也可以运行在Sun公司的Sparc机器上。 当然也可以运行在Intel公司的386以上的机器上。 编写的好的源代码可以不经修改的在各种不同的Linux平台上直接编译安装运行, 但是显然,不同的硬件平台之间的可执行文件是不兼容的。 但是一个特别针对Intel机器的rpm软件包是可以轻易的在for Intel的RedHat,SuSE,Debian, 以及Slackware上安装运行起来的。
RedHat,SuSE,Slackware以及Debian等各个发布之间的另一个不同是, 它们都带有自己的系统管理工具。 RedHat使用著名的控制面板+Linuxconf, Debian使用臭名昭著的dselect(为什么说臭名昭著?因为它非常难控制, 我自己只要有可能,就尽量不碰它) Slackware使用pkgtool, SuSE也有自己的管理工具。
Linux是一个开放的操作系统,它的各个部分:内核,应用程序, 库程序是有机的结合的。并不是固定的死死的,碰都不能碰。Linux的内核的版本号是XX.XX.XX格式的,由三个数字组成, 之一个数字是主版本好,第三个数字是辅版本号,中间的数字如果是奇数, 表示这是一个开发版的内核,如果是偶数,表示是一个相对稳定的,可靠的内核。 一般来讲,除非你正在研究Linux内核,或有特别的需要, 否则不要摆弄奇数版本的内核。
今天演示的第三个部分是Linux下的软件。常常有人抱怨Linux缺乏有效的软件的支持, 这在一定情况下的确如此,但是另一方面也是我们对Linux了解太少, Linux平台上现在已经有了相当多的应用软件。 并且Linux正在得到越来越多的厂家的支持。 这段时间炒的非常火的Oracle,Sybase等等大型数据库的Linux版本就是一例。
Linux下不但有类似于PhotoShop的免费的图像编辑软件:gimp, 还有免费的类似于3DS的三维设计软件:MoonLight。 并且所有这些软件,你都可以得到源代码。
Linux下的图形用户界面是基于X窗口系统的, 这也秉承了Linux的一贯传统:开放的,有机结合的。 XFree86只是图形界面的服务器,上面可以运行各种不同的窗口管理器, 现在著名的窗口管理器有AfterStep,WindowMaker,以及Enlightenment。 有的窗口管理器做得非常的漂亮,真是叫做不看不知道,一看吓一跳。 另外,如果你不喜欢花哨的窗口管理器,你可以选择wm2或者9wm, 它们只占用非常少的系统资源,我自己经常使用的就是9wm。
有了X服务器和一个窗口管理器,你就有了图形用户界面。 你就可以运行Gimp或者Moonlight了,甚至你还可以运行Doom和quake!
现在还有一批程序员正在为Linux开发免费的,开放源代码的红色警报。
对Linux的一个最主要的批评是:Linux缺乏支持。 坦白的说,就我自己作为一个个人用户来讲,我觉得Linux的支持非常的好。 我曾经在安装Debian的时候遇到几个问题, 到Debian的Mail List里发信询问了一下,几个小时后就得到了答案。
一般redhat 会自代源码盘,你需要在linux下自己减压缩后才可以看到.
参考资料:redhat光盘资料
你可以安装比较新的gcc来更新,我看centos 7.2下面有一个gcc-nm,与nm报的信息一样:
$nm –version
GNU nm version 2.23.52.0.1-55.el
Copyright 2023 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) any later version.
This program has absolutely no warranty.
$gcc-nm –version
GNU nm version 2.23.52.0.1-55.el
Copyright 2023 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) any later version.
This program has absolutely no warranty.
也可以安装 binutils.x86_64 : A GNU collection of binary utilities 试试,
yum install binutils 或者
yum update binutils
linux下编译运行驱动
嵌入式linux下设备驱动的运行和linux x86 pc下运行设备驱动是类似的,由于手头没有嵌入式linux设备,先在vmware上的linux上学习驱动开发。
按照如下方法就可以成功编译出hello world模块驱动。
1、首先确定本机linux版本
怎么查看Linux的内核kernel版本?
‘uname’是Linux/unix系统中用来查看系统信息的命令,适用于所有Linux发行版。配合使用’uname’参数可以查看当前服务器内核运行的各个状态。
#uname -a
Linux whh 3.5.0-19-generic #30-Ubuntu PTue Nov 13 17:49:53 UTC 2023 i686 i686 i686 GNU/Linux
只打印内核版本,以及主要和次要版本:
#uname -r
3.5.0-19-generic
要打印系统的体系架构类型,即的机器是32位还是64位,使用:
#uname -p
i686
/proc/version 文件也包含系统内核信息:
# cat /proc/version
Linux version 3.5.0-19-generic(buildd@aatxe) (gcc version 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1) ) #30-UbuntuP Tue Nov 13 17:49:53 UTC 2023
发现自己的机器linux版本是:3.5.0-19-generic
2、下载机器内核对应linux源码
到下面网站可以下载各个版本linux源码
如我的机器3.5.0版本源码下载地址为:
pub/linux/kernel/v3.x/linux-3.5.tar.bz2
下载完后,找一个路径解压,如我解压到/linux-3.5/
然后很重要的一步是:执行命令uname -r,可以看到Ubuntu的版本信息是3.5.0-19-generic
。进入linux源码目录,编辑Makefile,将EXTRAVERSION = 修改为EXTRAVERSION= -19-generic。
这些都是要配置源码的版本号与系统版本号,如果源码版本号和系统版本号不一致,在加载模块的时候会出现如下错误:inod: error inserting ‘hello.ko’: -1 Invalid module format。
原因很明确:编译时用的hello.ko的kenerl 不是我的pc的kenerl版本。
执行命令cp /boot/config-3.5.0-19-generic ./config,覆盖原有配置文件。
进入linux源码目录,执行make menuconfig配置内核,执行make编译内核。
3、写一个最简单的linux驱动代码hello.c
/*======================================================================
Asimple kernel module: “hello world”
======================================================================*/
#include
#include
MODULE_LICENSE(“zeroboundaryBSD/GPL”);
static int hello_init(void)
{
printk(KERN_INFO”Hello World enter\n”);
return0;
}
static void hello_exit(void)
{
printk(KERN_INFO”Hello World exit\n “);
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_AUTHOR(“zeroboundary”);
MODULE_DESCRIPTION(“A simple HelloWorld Module”);
MODULE_ALIAS(“a simplestmodule”);
4、写一个Makefile对源码进行编译
KERN_DIR = /linux-3.5
all:
make-C $(KERN_DIR) M=`pwd` modules
clean:
make-C $(KERN_DIR) M=`pwd` clean
obj-m += hello.o
5、模块加载卸载测试
inod hello.ko
rmmod hello.ko
然后dmesg|tail就可以看见结果了
最后,再次编译驱动程序hello.c得到hello.ko。执行inod ./hello.ko,即可正确insert模块。
使用inod hello.ko 将该Module加入内核中。在这里需要注意的是要用 su 命令切换到root用户,否则会显示如下的错误:inod: error inserting ‘hello.ko’: -1 Operation not permitted
内核模块版本信息的命令为modinfo hello.ko
通过lod命令可以查看驱动是否成功加载到内核中
通过inod命令加载刚编译成功的time.ko模块后,似乎系统没有反应,也没看到打印信息。而事实上,内核模块的打印信息一般不会打印在终端上。驱动的打印都在内核日志中,我们可以使用dmesg命令查看内核日志信息。dmesg|tail
可能还会遇到这种问题inod: error inserting ‘hello.ko’: -1 Invalid module format
用dmesg|tail查看内核日志详细错误
disagrees about version of symbolmodule_layout,详细看这里。
在X86上我的办法是:
make -C/usr/src/linux-headers-3.5.0-19-generic SUBDIRS=$PWD modules
关于linux源码下载的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
成都网站建设选创新互联(☎:028-86922220),专业从事成都网站制作设计,高端小程序APP定制开发,成都网络营销推广等一站式服务。
网页标题:轻松获取Linux源码:下载方法一览(linux源码下载)
文章网址:http://www.gawzjz.com/qtweb2/news14/6564.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联