皮皮网

【卡劵回收源码】【cardview 阴影源码】【pigcms 源码 csdn】nginx内核源码_nginx源码剖析

2024-12-24 11:10:51 来源:灯塔答题源码

1.centos和debian哪个好?
2.Linux系统编程 每周一深入 (二)高级文件IO
3.关于linux学习路线的核源问题 请教前辈
4.Nginx源码交叉编译-保姆级移植ARM

nginx内核源码_nginx源码剖析

centos和debian哪个好?

       DebianVSCentOS哪个更好

       é€šè¿‡ä»¥ä¸Šæˆ‘个人认为:从安全上说CentOS,rhel,oracle-LinuxDebian

       ä»Žæ€§èƒ½ä¸‹é™è¯´ä¹Ÿæ˜¯CentOS,rhel,oracle-LinuxDebian

       å…¶æ¬¡ï¼Œé€šè¿‡è§‚察debain内核源码和CentOS内核源码大小,我们可以看到Debian内核才M,而CentOS内核则达到了M为什么呢?还是我先前一篇文章中

       åˆ†æžè¿‡çš„,Debian是自由内核,里面去除了很多no-free固件驱动,功能代码,而CentOS

       åˆ™æ˜¯ç»§æ‰¿äº†rhel的特点,得到世界很多硬件厂商的权利支持,不管是free还是no-free的全部包含在内核源代码中,而且在虚拟化(kvm)部署中也是处于领导地位的,其中也不乏一些还来得及被Debian,或者标准内核采纳的代码,这样就导致了:

       ç¡¬ä»¶æ”¯æŒç‰¹åˆ«æ˜¯è™šæ‹ŸåŒ–CentOS,rhel,oracle-LinuxDebian(freebsd)

       è¿˜æœ‰ï¼Œä¸€ä¸ªå°±æ˜¯é€šè¿‡ç¼–译内核我们发现,默认情况下,CentOS开启的内核

       é€‰é¡¹éƒ½æ˜¯éžå¸¸ä¿å®ˆçš„,而Debian则很时髦,有什么新玩意就上,比如Debian开启了内存分配slub内核尺寸优化Os而CentOS还是使用久经考验的slab和O2..........

       é»˜è®¤å†…核配置性能测试DebianCentOS,rhel,oracle-Linux

       æœ€åŽæˆ‘们来说说,他们各自的应用软件支持数量,从官方发布的安装dvd(只有一张3.4G)上可以看出CentOSrhel是专门来做服务器,vps来用的,包含的软件相对debain安装dvd(8å¼ dvd)来说是少只又少。我曾经就yuminstallnginx结果我失败了

       æˆ‘以为我打错。结果真的没有,要自己二外去加源,我知道有很多第三方的软件源可以使用,但是单从官方支持上说是很少了,这也表明了CentOS重要用途,还是以服务器为主,桌面勉强可以吧!而Debian呢有4万多种软件,涵盖了开发,桌面,服务器软件,等等几乎你说能用到的所有软件都有,而且apt包管理也比yum强很多,以此,我个人判断:

       å¼€å‘方环境,通用性DebianCentOS,rhel,oracle-Linux

       å¥½äº†æ¥ä¸ªæ€»ç»“吧,如果不是狂热的系统定制优化狂人,我的建议是:

       1,如果你是开发者,和狂热的性能追求者或者是vps中的服务器请使用Debian!

       2,如果你是vps供应商,电子商务,使用了很多像hp,ibm等大品牌服务器,而且要求很高的稳定性,安全性,我建议你使用rhel家族,最少用%左右的性能损失,不是很大的易用性损失,换来安全稳定还是值得的!

       centosdebian哪个对arm支持好

       CentOS和Debian都支持ARM架构,但它们在对ARM的支持方面有所不同,具体取决于您的需求。一般而言,Debian是更早支持ARM架构的发行版之一,并且社区支持也更好,因此在ARM设备上的兼容性可能更好。另一方面,CentOS在ARM架构上的支持也越来越好,特别是在RaspberryPi等设备上的支持方面表现不错。因此,您需要根据您的具体需求来选择CentOS或Debian。

debian比较centos哪个快

       debianå¿«

       å®ƒè¿˜åŒ…括在其官方存储库之外的非GPL软件。以遵守其提供免费软件的准则。

       1。主要软件版本

       DebianStableWheezy已拥有这些软件版本。

       Apache-2.2.

       PHP-5.4.4

       MySQL-5.5.

       PostgreSQL-9.1.9

       2。升级

       å°†Debian从一个稳定版本升级到下一稳定版本很容易。操作也比较简单。

       3。稳定性

       Debian被认为是比许多其他发行版更稳定的Linux发行版。对于企业而言。这是一个不错的选择。因为该版本中的错误导致的开销更少。它还为修补安全漏洞提供了时间。因此这些发行版通常比其他Linux发行版的发行版更安全。

       4。易用性

       é€šå¸¸è®¤ä¸ºDebianLinux发行版比初学者更适合Linux专家。它从一开始就假定您对Linux开发有一定的了解。安装程序为用户提供了对其配置的更高程度的控制和自定义。

       ä»¥ä¸Šå°±æ˜¯Debian和CentOS的区别。对于需要完全控制的有经验的用户。Debian可能更好;对于想要更稳定和安全的Linux发行版的企业。CentOS可能更好。

为什么选择CentOS而不是Debian?

       æˆ‘们运行着一些全球最大的互联网的营运,因此我们对可靠性和稳定性非常重视,是我们的第一要务。为此,我们只使用Linux来支撑顾客的系统。但是,我们应该使用哪一个Linux的发行版?答案是,CentOS。为什么呢?\x0d\\x0d\作为一个庞大的系统运营商,在很长的一段时间里,我们需要在多种大型系统中找到一个可靠的,可预测的系统,我们需要从世界上最强大的软件供应商和开源项目中获得强有力的支持。对于那些最常用的系统,我们需要文档,工具和全球性资源。\x0d\\x0d\正因如此,RedHat/CentOS系列发行版正是我们的选择。他们能够满足以上所有需求,而且问题相对较少、长期稳定,这使得我们能够为成千上万的运行了不同配置、服务和应用的系统提供世界级的维护。\x0d\\x0d\RedHat’sEnterpriseLinux\x0d\(RHEL)是黄金标准的企业发行版。它每五年左右更新一次,在系统的稳定性,前瞻性和安全性上有着极大的优势。每当新的主版本发行后,比如\x0d\5.x亦或最近的6.x,所有版本和代码都将保留不变,只有安全问题或是主要的bug,例如后门,端口之类的问题,会通过发布新的子版本来修复。\x0d\\x0d\CentOS是RHEL发行版对应的开源版本,通常在RedHat的发布后就会很快发行。我们使用CentOS的原因在于RHEL发行版的标准支持服务费用非常高,大约每台服务器美元左右,对于我们很多拥有数十台甚至上百台服务器的用户来说,这是必须要控制的成本。\x0d\\x0d\RHEL/CentOS系统有两个潜在的问题。\x0d\\x0d\首先,一旦确定了主版本,,除了安全问题和严重故障会被修复以外,其他内容将不会做任何改变。这虽然对稳定性有\x0d\好处,但是对许多服务不利。比如MySQL和PHP服务,它们在这五年的CentOS/RHEL主版本发布周期中会进行繁重的开发和大量的修改。例\x0d\如,MySQL5.0是当前RHEL/CentOS主版本所默认使用的版本,但是当前MySQL已经更新到5.1和5.5版本了。\x0d\\x0d\幸运的是,这个问题被Yum软件包管理器轻易地解决了。如此以来,那些主要的软件,例如当前RHEL/CentOS中实际的组件,包括内核和所有工\x0d\具等仍然来自发行版,但是那些附加的软件,例如Nginx,Apache,PHP,Java和MySQL等等来自更新的软件源例如Fedora;\x0d\或者直接从开发商获取更新的版本例如MySQL。在我们这里,我们有自己专用的安装镜像来全自动的处理所有这些事情。\x0d\\x0d\其次,CentOS的发行会滞后于RedHat的发行,包括关键的补丁和修复。这在RHEL6.x的发行周期中尤为显著。但是根据我们的经验,这没什么好担心的,对我们来说永远不会成为问题。\x0d\\x0d\很多人询问我们为什么不用基于Debian的系统,例如Debian或者Ubuntu服务器。如果在别无选择的情况下,我们的确会支持这个建议,但是根据我们的经验来看,这些系统并不如RHEL/CentOS来的稳定和可靠。\x0d\\x0d\我们认为,这在某种程度上是由于他们过快的发展和各个版本、组合之间较少的测试且不成熟所导致的。然而尽管他们非常流行,但是主要的服务商和项目都\x0d\仍然首选RHEL/CentOS系统,因为这样他们就可以为企业顾客提供服务,(对Oracle和MySQL更是如此)。除此之外,基于Debian的系统有许多内核和稳定性问题,尤其是在我们的云计算服务中。\x0d\\x0d\对我们而言,唯一使用Debian/Ubuntu的原因是:\x0d\\x0d\“它们能够为一个系统提供必要的特殊服务时,尤其是当一些驱动程序或者一些IO子系统需要一种新的内核的时候”。例如,ext4文件系统或在最近的内核中日志的改变等;现在,所有这一切都包含在了RHEL/CentOS6.x中。\x0d\\x0d\当然,多数Linux开发者都使用的是Ubuntu的桌面版,而且可以理解的是,他们更倾向在开发生产时使用相同的系统,并且还能使用很多有趣的工具。但总体上来说,我们依然认为RHEL/CentOS是一个更优越的部署平台,并且已经有十多个客户成功地转向使用CentOS作为生产环境并且没有任何问题,但这仍然是艰巨的任务。\x0d\\x0d\总的来说,你将更乐于看到一个良好管理的CentOS系统。我们有成千上万台服务器使用CentOS平台,而每年平均只有一台服务器崩溃。我们也很难想象它竟如此罕见,所以,挑一个优秀、迅捷、可靠的平台吧!

CentOSDebianUbuntu哪个系统好?

       æ–‡ç« ç›®å½•CentOSDebianCentOS与Debian哪个好?Ubuntuä¹°VPS时有CentOS、Debian、Ubuntu三种操作系统可以选择,Linux下哪种系统更好是很多新人都会遇到的问题,在此,我们分析一下Ubuntu、CentOS及Debian各自的性能及使用经验。做服务器的很少会用Ubuntu,所以我们最后分析这个。先来看看使用率较高的CentOS和Debian。CentOS很多商业性公司服务器都是使用CentOS系统,CentOS简约,命令行下的人性化做得比较好,稳定,有着强大的英文文档与开发社区的支持。相对debian来说,CentOS略显体积大一点,是一个非常成熟的Linux发行版。DebianDebian更适合于作为服务器的操作系统,它比Ubuntu要稳定得多。Debian整个系统基础核心非常小,不仅稳定,而且占用硬盘空间小,占用内存小。M的VPS即可以流畅运行Debian,而CentOS则会略显吃力。但是由于Debian的发展路线,使它的帮助文档相对于CentOS略少,技术资料也少一些。CentOS与Debian哪个好?在国内服务器中,使用CentOS的要多于Debian,而国外则Debian稍多些。选择Debian是因为它是最大的社区发行版,有着严格的组织来维护,有着成千上万个超级黑客在贡献,而且有着最大的软件仓库,现在已经达到多个,有着大量的文档资源。而CentOS的更新比较慢,软件库软件版本过于陈旧,虽说稳定但是无法发挥出VPS的硬件特性。虽然也有社区,但是它没有固定的组织来管理,没有收入来源。另外,Debian

       6涉及到WEB服务器的软件包都更新到了比较新的稳定版本,并且借助apt命令直接安装非常快捷。选择CentOS大多是因为系统的稳定和可靠性,Debian发展过快,各个版本、组合之间测试较少稍显不成熟,系统有许多内核和稳定性问题。Debian很时髦,有什么新玩意就上,而CentOS开启的内核选项都是非常保守。所以,从安全、稳定角度出发,主要的服务商和项目都仍然首选CentOS系统。下面看一些具体的比较:从安全上说CentOSDebian从性能下降说CentOSDebian硬件支持特别是虚拟化CentOSDebian默认内核配置性能测试DebianCentOS发开环境通用性DebianCentOS最后,如果你是开发者和狂热的性能追求者或者是VPS中的服务器建议用Debian,如果是VPS供应商、电子商务网站,要求很高的稳定性、安全性,则建议采用CentOS。另外,对于初玩者,如果VPS配置太低(OPENVZ内存在M以下,或者XEN架构内存在M以下)建议采用Debian,否则建议采用CentOS,以获取更多的在线帮助与支持,让自己入门更轻松。UbuntuUbuntu近些年的使用率有所增加,它用户界面漂亮、管理系统完善、软件源支持强大、技术社区丰富,对硬件的兼容性也不错。然而,服务器更需要的并非这些,所以决定了它更适合于桌面操作系统,在自己电脑上安装或许要比服务器中更适合一些。对于Linux,ubuntu系统资源消耗且不稳定只能被比喻成鸡肋。服务器需要的只是一个简约、稳定、易用的系统而已!Ubuntu比较鸡肋还有一个原因就是对NGINX的支持太弱,而Nginx性能要远远高于Apache。所以,对于新手,基本应该选择CentOS系统而非Debian和Ubuntu。在确定选择CentOS后,我们还需要确定是用位系统还是位系统。在此,笨鸟的建议是,如果你用的VPS是非常牛的配置,那你用位比较合适;但如果服务器一般,还是老老实实的用位吧!

Linux系统编程 每周一深入 (二)高级文件IO

       在Linux系统中,一切操作都可以抽象为文件读写。源码因此,剖析本系列文章的核源第二部分将深入探讨Linux中的文件IO。

       常规的源码文件IO涉及的系统调用包括:open、read、剖析卡劵回收源码write、核源close,源码分别对应打开、剖析读取、核源写入和关闭文件。源码在执行读写操作时,剖析内核会维护一个指向当前文件偏移量的核源指针。为了灵活控制偏移量,源码系统调用lseek提供了定位文件位置的剖析能力。glibc提供的fopen、fread、fwrite、close和fseek(ftell)等函数,则是上述系统调用的封装,其中包含缓存机制以提高读写效率。

       通常,上述函数足以应对大部分应用场景。今天,我们将重点介绍几个更高级的系统调用:pread、pwrite、readv、writev、preadv和pwritev。它们的功能可以用基本读写函数实现,但提供更便捷的特性,可能在某些场景下成为提高效率的利器。

       以多线程下载程序为例,我们可以通过记录每个线程负责的文件部分位置和已写入字节数,实现数据合并。但这种方法可能因加锁和频繁的lseek操作而成为下载速度的瓶颈。为了避免这些问题,可以使用pread和pwrite系统调用,它们不会改变文件偏移量,从而简化程序逻辑。

       在分散读和集中写的场景中,writev系统调用可以将分散数据集中在一次系统调用中发送。与之对应的readv系统调用则完成相反的操作,从文件中读取数据并填充到指定位置。nginx源码中就包含分散度和集中写的例子。

       此外,Linux还提供了preadv和pwritev函数,支持多线程的cardview 阴影源码分散读和集中写。这些函数结合了pread、pwrite、readv和writev的功能,在特定应用场景下可以提高效率。

       总结:Linux的文件IO功能丰富,除了基础操作外,还针对多线程和集中/分散读写提供了系列函数。掌握这些函数的用途和使用方法,将有助于解决特定应用场景下的效率问题。

关于linux学习路线的问题 请教前辈

       很多同学接触Linux不多,对Linux平台的开发更是一无所知。而现在的趋势越来越表明,作为一 个优秀的软件开发人员,或计算机IT行业从业人员,掌握Linux是一种很重要的谋生资源与手段。下来我将会结合自己的几年的个人开发经验,及对 Linux,更是类UNIX系统,及开源软件文化,谈谈Linux的学习方法与学习中应该注意的一些事。

       就如同刚才说的,很多同学以前可能连Linux是什么都不知道,对UNIX更是一无所知。所以我们从最基础的讲起,对于Linux及UNIX的历史我们不做多谈,直接进入入门的学习。

       Linux入门是很简单的,问题是你是否有耐心,是否爱折腾,是否不排斥重装一类的大修。没折腾可以说是学不好Linux的,鸟哥说过,要真正了解Linux的分区机制,对LVM使用相当熟练,没有次以上的Linux装机经验是积累不起来的,所以一定不要怕折腾。

       由于大家之前都使用Windows,所以我也尽可能照顾这些“菜鸟”。我的推荐,如果你第一次接触Linux,那么首先在虚拟机中尝试它。虚拟机我推荐Virtual Box,我并不主张使用VM,原因是VM是闭源的,并且是收费的,我不希望推动盗版。当然如果你的pigcms 源码 csdnMoney足够多,可以尝试VM,但我要说的是即使是VM,不一定就一定好。付费的软件不一定好。首先,Virtual Box很小巧,Windows平台下安装包在MB左右,而VM动辄MB,虽然功能强大,但资源消耗也多,何况你的需求Virtual Box完全能够满足。所以,还是自己选。如何使用虚拟机,是你的事,这个我不教你,因为很简单,不会的话Google或Baidu都可以,英文好的可以直接看官方文档。

       现在介绍Linux发行版的知识。正如你所见,Linux发行版并非Linux,Linux仅是指操作系统的内核,作为科班出生的你不要让我解释,我也没时间。我推荐的发行版如下:

       UBUNTU适合纯菜鸟,追求稳定的官方支持,对系统稳定性要求较弱,喜欢最新应用,相对来说不太喜欢折腾的开发者。

       Debian,相对UBUNTU难很多的发行版,突出特点是稳定与容易使用的包管理系统,缺点是企业支持不足,为社区开发驱动。

       Arch,追逐时尚的开发者的首选,优点是包更新相当快,无缝升级,一次安装基本可以一直运作下去,没有如UBUNTU那样的版本概念,说的专业点叫滚动升级,保持你的系统一定是最新的。缺点显然易见,不稳定。同时安装配置相对Debian再麻烦点。

       Gentoo,Java面试 源码相对Arch再难点,考验使用者的综合水平,从系统安装到微调,内核编译都亲历亲为,是高手及黑客显示自己技术手段,按需配置符合自己要求的系统的首选。

       Slackware与Gentoo类似。

       CentOS,社区维护的RedHat的复刻版本,完全使用RedHat的源码重新编译生成,与RedHat的兼容性在理论上来说是最好的。如果你专注于Linux服务器,如网络管理,架站,那么CentOS是你的选择。

       LFS,终极黑客显摆工具,完全从源代码安装,编译系统。安装前你得到的只有一份文档,你要做的就是照文档你的说明,一步步,一条条命令,一个个软件包的去构建你的Linux,完全由你自己控制,想要什么就是什么。如果你做出了LFS,证明你的Linux功底已经相当不错,如果你能拿LFS文档活学活用,再将Linux从源代码开始移植到嵌入式系统,我敢说中国的企业你可以混的很好。

       你得挑一个适合你的系统,然后在虚拟机安装它,开始使用它。如果你想快速学会Linux,我有一个建议就是忘记图形界面,不要想图形界面能不能提供你问题的答案,而是满世界的去找,去问,如何用命令行解决你的问题。在这个过程中,你最好能将Linux的命令掌握的不错,起码常用的命令得知道,同时建立了自己的知识库,里面是你积累的各项知识。

       再下个阶段,你需要学习的nginx 源码 invalid是Linux平台的C/C++开发,同时还有Bash脚本编程,如果你对Java兴趣很深还有Java。同样,建议你抛弃掉图形界面的IDE,从VIM开始,为什么是VIM,而不是Emacs,我无意挑起编辑器大战,但我觉得VIM适合初学者,适合手比较笨,脑袋比较慢的开发者。Emacs的键位太多,太复杂,我很畏惧。然后是GCC,Make,Eclipse(Java,C++或者)。虽然将C++列在了Eclipse中,但我并不推荐用IDE开发C++,因为这不是Linux的文化,容易让你忽略一些你应该注意的问题。IDE让你变懒,懒得跟猪一样。如果你对程序调试,测试工作很感兴趣,GDB也得学的很好,如果不是GDB也是必修课。这是开发的第一步,注意我并没有提过一句Linux系统API的内容,这个阶段也不要关心这个。你要做的就是积累经验,在Linux平台的开发经验。我推荐的书如下:C语言程序设计,谭浩强的也可以。C语言,白皮书当然更好。C++推荐C++ Primer Plus,Java我不喜欢,就不推荐了。工具方面推荐VIM的官方手册,GCC中文文档,GDB中文文档,GNU开源软件开发指导(电子书),汇编语言程序设计(让你对库,链接,内嵌汇编,编译器优化选项有初步了解,不必深度)。

       如果你这个阶段过不了就不必往下做了,这是底线,最基础的基础,否则离开,不要霍霍Linux开发。不专业的Linux开发者作出的程序是与Linux文化或UNIX文化相背的,程序是走不远的,不可能像Bash,VIM这些神品一样。所以做不好干脆离开。

       接下来进入Linux系统编程,不二选择,APUE,UNIX环境高级编程,一遍一遍的看,看遍都嫌少,如果你可以在大学将这本书翻烂,里面的内容都实践过,有作品,你口头表达能力够强,你可以在面试时说服所有的考官。(可能有点夸张,但APUE绝对是圣经一般的读物,即使是Windows程序员也从其中汲取养分,Google创始人的案头书籍,扎尔伯克的床头读物。)

       这本书看完后你会对Linux系统编程有相当的了解,知道Linux与Windows平台间开发的差异在哪?它们的优缺点在哪?我的总结如下:做Windows平台开发,很苦,微软的系统API总在扩容,想使用最新潮,最高效的功能,最适合当前流行系统的功能你必须时刻学习。Linux不是,Linux系统的核心API就来个,记忆力好完全可以背下来。而且经久不变,为什么不变,因为要同UNIX兼容,符合POSIX标准。所以Linux平台的开发大多是专注于底层的或服务器编程。这是其优点,当然图形是Linux的软肋,但我站在一个开发者的角度,我无所谓,因为命令行我也可以适应,如果有更好的图形界面我就当作恩赐吧。另外,Windows闭源,系统做了什么你更本不知道,永远被微软牵着鼻子跑,想想如果微软说Win8不支持QQ,那腾讯不得哭死。而Linux完全开源,你不喜欢,可以自己改,只要你技术够。另外,Windows虽然使用的人多,但使用场合单一,专注与桌面。而Linux在各个方面都有发展,尤其在云计算,服务器软件,嵌入式领域,企业级应用上有广大前景,而且兼容性一流,由于支持POSIX可以无缝的运行在UNIX系统之上,不管是苹果的Mac还是IBM的AS系列,都是完全支持的。另外,Linux的开发环境支持也绝对是一流的,不管是C/C++,Java,Bash,Python,PHP,Javascript,。。。。。。就连C#也支持。而微软除Visual Stdio套件以外,都不怎么友好,不是吗?

       如果你看完APUE的感触有很多,希望验证你的某些想法或经验,推荐UNIX程序设计艺术,世界顶级黑客将同你分享他的看法。

       现在是时候做分流了。 大体上我分为四个方向:网络,图形,嵌入式,设备驱动。

       如果选择网络,再细分,我对其他的不是他熟悉,只说服务器软件编写及高性能的并发程序编写吧。相对来说这是网络编程中技术含量最高的,也是底层的。需要很多的经验,看很多的书,做很多的项目。

       我的看法是以下面的顺序来看书:

       APUE再深读 – 尤其是进程,线程,IPC,套接字

       多核程序设计 - Pthread一定得吃透了,你很NB

       UNIX网络编程 – 卷一,卷二

       TCP/IP网络详解 – 卷一 再看上面两本书时就该看了

       5.TCP/IP 网络详解 – 卷二 我觉得看到卷二就差不多了,当然卷三看了更好,努力,争取看了

       6.Lighttpd源代码 - 这个服务器也很有名了

       7.Nginx源代码 – 相较于Apache,Nginx的源码较少,如果能看个大致,很NB。看源代码主要是要学习里面的套接字编程及并发控制,想想都激动。如果你有这些本事,可以试着往暴雪投简历,为他们写服务器后台,想一想全球的魔兽都运行在你的服务器软件上。

       Linux内核 TCP/IP协议栈 – 深入了解TCP/IP的实现

       如果你还喜欢驱动程序设计,可以看看更底层的协议,如链路层的,写什么路由器,网卡,网络设备的驱动及嵌入式系统软件应该也不成问题了。

       当然一般的网络公司,就算百度级别的也该毫不犹豫的雇用你。只是看后面这些书需要时间与经验,所以岁以前办到吧!跳槽到给你未来的地方!

       图形方向,我觉得图形方向也是很有前途的,以下几个方面。

       Opengl的工业及游戏开发,国外较成熟。

       影视动画特效,如皮克斯,也是国外较成熟。

       GPU计算技术,可以应用在浏览器网页渲染上,GPU计算资源利用上,由于开源的原因,有很多的文档程序可以参考。如果能进火狐开发,或google做浏览器开发,应该会很好 。

       嵌入式方向:嵌入式方向没说的,Linux很重要。

       掌握多个架构,不仅X的,ARM的,单片机什么的也必须得懂。硬件不懂我预见你会死在半路上,我也想走嵌入式方向,但我觉得就学校教授嵌入式的方法,我连学电子的那帮学生都竞争不过。奉劝大家,一定得懂硬件再去做,如果走到嵌入式应用开发,只能祝你好运,不要碰上像Nokia,Hp这样的公司,否则你会很惨的。

       驱动程序设计:软件开发周期是很长的,硬件不同,很快。每个月诞生那么多的新硬件,如何让他们在Linux上工作起来,这是你的工作。由于Linux的兼容性很好,如果不是太低层的驱动,基本C语言就可以搞定,系统架构的影响不大,因为有系统支持,你可能做些许更改就可以在ARM上使用PC的硬件了,所以做硬件驱动开发不像嵌入式,对硬件知识的要求很高。可以从事的方向也很多,如家电啊,特别是如索尼,日立,希捷,富士康这样的厂子,很稀缺的。

       LDD – Linux驱动程序设计与内核编程的基础读物

       深入理解Linux内核 – 进阶的

       Linux源代码 – 永无止境的

       当然你还的看个方面的书,如网络啊什么的。

Nginx源码交叉编译-保姆级移植ARM

       在Ubuntu..7 位系统上,使用arm-linux-gnueabihf-gcc作为交叉编译器,针对arm内核4.1.和恩智浦imx6ul嵌入式平台,进行了一次详细的Nginx源码的交叉编译移植过程。

       准备工作包括了下载Nginx(1..0)、pcre(8.)、zlib(1.3.1)和openssl(1.1.1)的最新版本。在编译过程中,作者尝试了openssl的3.0.版本,但遇到编译问题,最终选择1.1.1版本进行编译。

       在进入Nginx源码目录后,需要对部分源码进行修改,如移除退出函数并调整size大小。增加PCRE配置后,对Nginx进行配置,如果不需要ssl,应移除相关部分。配置完成后生成Makefile,但在此阶段并未进行编译。

       Pcre源码的处理包括切换目录、配置和编译,编译成功且无误。对于openssl(选配),需要确保安装路径设置正确,配置后删除部分Makefile内容,进行编译,可能需要清理缓存以解决编译问题。

       在Nginx部分的后续操作中,添加了必要的定义以避免malloc未引用错误,并调整了Makefile以排除之前手动编译的影响。最后进行编译,安装完成后,检查可执行文件类型和大小,进行优化以减少调试信息,使文件减小至2.8M。

       测试阶段,将编译后的文件复制到arm设备,通过修改配置文件解决报错后,成功运行并访问测试页面,完成了基础的移植工作。