linux
怎样阅读 Chromium 源码?
一、怎样阅读 Chromium 源码?
路过
没咋全读过 chromium 代码,而且题太大…… 懒…… 随便说说得了……
如果真要读,个人觉得最好先下代码,编译一把,用附加进程模式单步调试去跟下。
(对了,记得看看下 chrome 的 命令行参数,对调试渲染进程有帮助哈)
就我所摸索出来的,了解目录结构非常有必要。
光看看代码可以去 https://cs.chromium.org/chromium/src/ (翻墙,这玩意真是贼好使)
就 src 目录来说
v8 不说了,js 引擎代码。
里头个人来说扒的较多的是 include 目录,主要看一些引擎 api 好去搜具体实现,有些轻车熟路的可能就直接去 rumtime 下看看有没有。
有时候遇上一些语法解析问题,会去 src/parsing 下看看,或者 src/ast 目录下看看。其目录不太熟,大多是跟代码时候跟顺带跟进去的,不是具体问题的话,没有做过总结。对了,还有个 src/objects.
third_party 下主要看 blink,blink 下主要看看 renderer,renderer 下主要看 core。
core 都挺重要的,我陆续接触的比较多是 css dom events frame html imput layout timing 等……
别忘了看看 idl 文件,js dom bom 以及一些非 d\bom 的api 定义都跟这文件里头,回头自己跟里头加点私货挺方便的。
实际布局计算、 dom 实现、一些 bom 等基本在这里头。
chrome 里头我看看的比较少,只涉及了一点,一个是 VERSION(顾名思义了,另一个 chrome/browser 下的一些内容,比如 external_protocol 、extensions(扩展啊)、ui 这些。
还有 chrome/common 里的 xx_url_constants ,恩就是些 scheme 啥的。
此外是 chrome/renderer 里头 loadtimes_extension_bindings 真是加点自定义JS货色的好地方(无头模式不支持哈)……
content 下么 …… browser/renderer_host 和 public/common 下好好看看,一个是有 chrome 的一些命令行参数定义,另一个有这些参数选择性代入到渲染进程的处理。之后渲染进程就能拿到这些参数来做事儿了。
关键吧 browser 还有个 frame_host 呢,这玩意是管渲染进程中渲染帧对象的,其中 render_frame_message_xxx 的都在里头,就是说 ipc 的消息处理得跟这弄。回头玩意渲染进程的 blink 要从主进程抓啥数据回来还指望这玩意定义通信方式呢。
net 太重要了,base、http、 cert 的实现都在这里,好好看,从主进程的 http(s) 里抽数据出来,或者恢复赛门铁克的证书支持等等都在这里了。还有可以弄 host mapping rules 哦~
写一半后悔了……就算是随便说说,这项目那么大……查目录太费劲……就这样吧先……
https://cs.chromium.org/chromium/src/ 真是随便看看代码时候贼好使,还能跟下change log diff 啥的(记得翻墙)。
随便截个图……
对了,看代码一定记得先看这个 https://www.chromium.org/developers/design-documents/multi-process-architecture
关键时刻脑子里有这图
得记住分清楚了所看目录中的代码是哪个进程哪个线程的。要不会容易看(或者调试时候跟)晕菜。
二、如何获取linux下命令源码?
命令的源码是一个软件包为单元的,放在一个软件包的源码中。若要下载一个命令的源码,就要把这个命令所属的软件包的源码都下载下来。命令的源码就在下载的源码的相关文件夹内。一般是src文件夹,对应的主文件名称为cmd.c,当中cmd为详细的命令,如ls命令的主程序文件为ls.c。
因为在不同的Linux发行版上。源码的获取方法并不同样。所以以下以Ubuntu和CentOS这两种经常使用的Linux发行版为样例进行说明。
1、Ubuntu中系统命令源码的获取方法
以32位Ubuntu14.04下,获取ls命令的源码为例,能够使用例如以下的方法下载源码:
1)使用which命令查看ls命令的位置,例如以下:
which ls # 输出:/bin/ls
2)使用dpkg命令查询ls命令所属的包。例如以下:
dpkg -S /bin/ls # 输出:coreutils: /bin/ls
3)使用apt-get命令来下载ls命令所在的包的源码。例如以下:
apt-get source coreutils
注:
1)在使用dpkg时。若出现错误。能够使用sudo命令使其以root权限运行。
2)使用apt-get source下载的源码保存到当前文件夹下。
。此外,当我们知道了命令所属的包后,也能够到对应的官方站点下载。
2、CentOS中系统命令源码的获取方法
以32位CentOS6.6下,获取ls命令的源码为例,能够使用例如以下的方法下载源码:
1)配置源码的源
在CentOS中,源的配置文件为:/etc/yum.repos.d/CentOS-Base.repo,改动该文件须要root权限。
打开该文件,查看该文件的内容,在本人的机子上,该文件的内容例如以下:
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?
release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
该文件里有两个变量:releasever和basearch。分别表示release版本号和分支,如本人的机子上,这两个值分别为6和i386。注意。releasever并不会细分为次级版本号。即不会是6.6之类的。
从该文件的内容能够知道,该文件共同拥有5个节。也就是说本人的机子的软件来源有5处,分别为base、updates、extras、centosplus和contrib。所以仅仅须要为例如以下的5处软件源指定其源码的源就可以。在文件的末尾加上例如以下的内容:
[base-src]
name=CentOS-$releasever - Base src
baseurl=http://vault.centos.org/6.6/os/Source/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
[updates-src]
name=CentOS-$releasever - Updates src-centos
baseurl=http://vault.centos.org/6.6/updates/Source/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
[extras-src]
name=CentOS-$releasever - Extras src-centos
baseurl=http://vault.centos.org/6.6/extras/Source/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
[centosplus-src]
name=CentOS-$releasever - Plus src-centos
baseurl=http://vault.centos.org/6.6/centosplus/Source/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
[contrib-src]
name=CentOS-$releasever - Contrib src-centos
baseurl=http://vault.centos.org/6.6/contrib/Soruce/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
因为不同的版本号设置会有所不同,所以其设置会有所不同,方法可总结为例如以下:
(1)gpgkey与该文件里已有的节的gpgkey同样
(2)为了确认文件的存在和情况,能够打开站点http://vault.centos.org/查看详细的情况,再依据详细的情况来填写
(3)设置baseurl时须要依据自己的系统的版本号来设置,如本人的机子为CentOS-6.6,则在设置时,相关的參数就设置为6.6。即http://vault.centos.org/后接的子路径为6.6。
该文件的作用是为yum其及相关工作的下载提供一个源。如在使用yumdownloader(以下会讲到)下载源码时。会发生例如以下动作:
(1)下载$baseurl/repodata/repomd.xml文件。若该repomd.xml文件比系统中的新。更新系统中的对应的repomd.xml
(2)下载$baseurl/SPackages/中的对应的源码rpm包。
2)使用which命令查看ls命令的位置,例如以下:
which ls
# 输出:/bin/ls
3)使用rpm命令查询ls命令所属的包,例如以下:
rpm -qf /bin/ls
# 输出:coreutils-8.4-37.el6.i686
4)yumdownloader是一个从RPM源下载RPM的程序,能够使用yumdownloader命令安装源码。例如以下:
yumdownloader --source coreutils-8.4-37.el6.i686
注:
(1)若yumdownloader命令没有安装,则能够使用此命令安装:yum install yum-utils。
(2)下载的文件在当前文件夹下。能够使用參数--destdir指定下载到哪一个文件夹。
5)使用yumdownloader下载到的是一个安装包文件rpm,能够使用例如以下的命令查询rpm中的tar文件:
rpm -qpl coreutils-8.4-37.el6.src.rpm | grep tar
# 输出:coreutils-8.4.tar.xz
6)使用rpm2cpio命令将rpm包文件转换成cpio归档文件,再使用cpio命令,从cpio归档文件复制提取出一个归档文件。出例如以下:
rpm2cpio coreutils-8.4-37.el6.src.rpm | cpio -idv coreutils-8.4.tar.xz
# 输出:
# coreutils-8.4.tar.xz
# 9561 blocks
cpio的man解释为:cpio copies files into an archive
-i:与--extract等同。提取之意
-d:与--make-directories等同,当有须要时创建一个载入文件夹
-v:列出文件的处理过程
7)使用tar命令对coreutils-8.4.tar.xz压缩包进行解压缩,例如以下:
tar -xvf ./coreutils-8.4.tar.xz
至此,命令的源码获取完毕。
三、linux内核源码是什么语言?
Linux内核源码是用C语言编写的。C语言是一种高级编程语言,被广泛应用于系统编程、嵌入式开发、游戏开发等领域。Linux内核源码被设计成高效、可移植、可维护的,因此选择C语言作为开发语言是理所当然的选择。此外,Linux内核也包含了一些汇编代码,用于处理一些底层的硬件操作。总之,Linux内核源码的编写语言是C语言。
四、如何修改kali linux镜像源码?
你装kali的时候会会然你选择系统语言的,当然你也可以这样:进入系统设置,然后选择区域和语言,在语言选项卡选择chinese,然后重启电脑
五、linux下如何获取软件源码?
以redhat为例
软件包以rpm结尾的已经打包的文件,我不知道怎么看
但是linux有很多开源的软件,都是以压缩文件形式发布的,如tar,tar。gz。gz2,bz
他们本身就是源码,你可以进行编译安装。
六、Linux下如何编译Android源码~~~?
这个问题已经找到解决方案了,方法如下:
1.在Linux设置文件共享,将项目共享,最好有个密码什么的。
2.在Linux上配置ssh server,用于和编译安卓源码3.Linux mac 通过连接,原因是有线传输比无线的快很多,ping只是0.3左右ms,不影响使用。然后就可以mac编写代码,然后ssh编译什么的,很方便,
七、Linux软件源码开发指南
在Linux操作系统中,软件源码是指程序原始代码的集合,它提供了一种定制、修改和扩展的方式。本文将介绍如何获取、编译和安装Linux软件源码的方法。
什么是Linux软件源码?
Linux软件源码是指开放源代码的软件项目的原始代码。开放源代码意味着任何人都可以查看、修改和分发该代码。
获取Linux软件源码的方式
- 官方网站下载:许多开源软件项目都在官方网站上提供源码下载。你只需打开开发者网站,并找到相关的下载链接即可。
- 版本控制系统:许多开源软件使用Git、SVN等版本控制系统进行源码管理。你可以使用版本控制工具下载最新的源码并跟踪其更新。
- Linux发行版软件仓库:许多常见的Linux发行版(如Ubuntu、Fedora等)都提供了软件仓库,你可以通过包管理器获取和安装软件源码。
编译和安装Linux软件源码
一旦你获得了软件源码,下一步就是编译和安装它。以下是一个典型的Linux软件源码编译和安装过程:
- 解压源代码包:首先,你需要解压源代码包,可以使用压缩软件或命令行工具。
- 配置编译选项:进入源码目录,运行配置脚本以选择编译选项。这些选项包括安装路径、编译器选项、功能开关等。
- 编译源码:运行编译命令(通常为make)进行源码编译。这一过程可能需要一些时间,取决于源码的规模和你的硬件性能。
- 安装软件:运行安装命令(通常为make install)将编译后的二进制文件和相关文件安装到系统中指定路径。
常见问题和注意事项
在编译和安装Linux软件源码时,可能会遇到一些常见问题。以下是一些常见的问题和注意事项:
- 依赖项:一些软件可能需要其他库和工具的支持,请确保你的系统上已安装这些依赖项。
- 系统兼容性:不同版本的Linux发行版可能有不同的系统库和工具链。确保你的系统与软件源码的要求兼容。
- 编译错误:如果遇到编译错误,请仔细阅读错误信息并尝试解决。你可以查阅官方文档、讨论论坛或开发者社区寻求帮助。
- 安全性考虑:在使用任何源码前,请确保它来自可信的源头,并在安装之前对代码进行审查。
通过本文,你了解了如何获取、编译和安装Linux软件源码的方法。希望这些指南能帮助你更好地定制、修改和扩展Linux软件。
谢谢您阅读本文,希望对您有所帮助!
八、如何阅读Nachos的源码?
通过阅读nachos代码,了解一个最基本的操作系统是如何工作运转起来的。 首先,需要下载windows版本的源代码.然后,我们就要关注在windows下向eclipse导入nachos源代码了:
1.打开eclipse,建立工程,命名为Nachos2.
2.找到新建好的工程Nachos2对应工作路径,将解压好的nachos源代码全部拷贝到src文件夹中.
3.将proj1中的nachos.confi文件拷贝到Nachos工程的根路径下,也就是与src同路径的文件夹中.以上三步做完之后,就可以运行了,具体步骤如下:找到nachos.machine.Machine.java文件,右键运行即可。网页上提到了程序的入口,Nachos 没怎么用到Java的高级特性,尤其是各类库.所以只需要熟悉下Java的类的特性,参数传递的特性.类的实例化 即对象相关的一些特性就可以了 .当然 如果能对Java有一些实际的编程经验是最好的了.随便写几个Java程序就基本可以获得足够的知识了 就Nachos而言
九、linux防黑指南?
Linux是一个多用户的系统,一旦人家取得你的root用户之后,他就可以在你的系统上为所欲为了,由于单用户对系统有完全的控制权限,如果操作不当或被他人进入,那么后果将不堪设想,如何防止入行单用户了,有以下几个注意的方面。
1、对/etc/inittab文件进行保护,如果把id:3: initdefault中的3改为成1,就可以每次启动直接进入到单用户方式。对/etc/inittab文件,以root身份进入通过chown 700 /etc/inittab把属性设为其它用户不能修改就行了。
2、如果是使用的lilo方式进行引导,可能通过linuxconf或直接修改lilo.conf把引导时等待输入时间设置为0或最短时行。这种情况下,如果进入单用户方式,可以用软盘进行引导。
3、如果使用是GRUB方式进行引导,最简单的方法是使用GRUB密码,对启动选项进行保护。
4、为了防止他人远程进行破坏,使系统重启,除了对ROOT的密码和/etc目录下的文件进行有效管理之外,还应当对CMOS进行密码设置,这样即使把系统改成单用户方式了,也无法直接的启动计算机进行操作。
十、linux unix源码一样吗?
linux unix源码不一样的。Linux和unix分别是两个完全不一样的操作系统,虽然他们在命令行上兼容,同一个软件,可以在linux和unix上面使用,让人觉得他们是一样的,但是它们是两个完全不同的操作系统,所以他们的源码是不一样的,你要分别在两个系统上写程序的话,你会发现他们更多细节上不一样的地方。
热点信息
-
在Python中,要查看函数的用法,可以使用以下方法: 1. 使用内置函数help():在Python交互式环境中,可以直接输入help(函数名)来获取函数的帮助文档。例如,...
-
一、java 连接数据库 在当今信息时代,Java 是一种广泛应用的编程语言,尤其在与数据库进行交互的过程中发挥着重要作用。无论是在企业级应用开发还是...
-
一、idea连接mysql数据库 php connect_error) { die("连接失败: " . $conn->connect_error);}echo "成功连接到MySQL数据库!";// 关闭连接$conn->close();?> 二、idea连接mysql数据库连...
-
要在Python中安装modbus-tk库,您可以按照以下步骤进行操作: 1. 确保您已经安装了Python解释器。您可以从Python官方网站(https://www.python.org)下载和安装最新版本...