化德| 若羌| 乌拉特中旗| 五指山| 循化| 乐至| 云梦| 察哈尔右翼后旗| 罗江| 太湖| 安国| 田东| 布拖| 都兰| 察哈尔右翼中旗| 日土| 启东| 昭平| 固阳| 兰溪| 兖州| 海盐| 长白山| 德庆| 白山| 铁山| 濉溪| 垫江| 武清| 安图| 南丰| 加查| 西藏| 瓯海| 汶川| 凌云| 江津| 浦江| 库车| 崇义| 图们| 山阳| 甘谷| 岷县| 唐海| 睢县| 头屯河| 当雄| 安达| 茶陵| 无锡| 金塔| 丰润| 襄樊| 鄂温克族自治旗| 绍兴县| 张家口| 望城| 新巴尔虎左旗| 抚顺县| 大洼| 长葛| 福鼎| 砀山| 涿鹿| 德格| 武隆| 大余| 南岳| 枣庄| 东台| 宿州| 正阳| 阜新市| 科尔沁右翼中旗| 宁都| 六枝| 汉中| 田东| 昂昂溪| 浦江| 岢岚| 下陆| 香港| 壶关| 高阳| 辽阳县| 松桃| 南涧| 泾源| 忠县| 潼关| 湖北| 盐源| 高雄市| 乌达| 永川| 郾城| 马边| 澧县| 凤山| 乌拉特中旗| 巴里坤| 双柏| 和龙| 静海| 曲松| 紫云| 铜川| 五华| 乌兰| 高碑店| 阜阳| 临夏县| 鄂州| 永寿| 彭水| 龙州| 靖安| 六安| 宽城| 武城| 思南| 石阡| 龙山| 宿迁| 柳河| 新龙| 寒亭| 长岭| 寻乌| 涿鹿| 钓鱼岛| 菏泽| 内江| 冷水江| 神木| 龙州| 黎城| 张家港| 浮梁| 康马| 灌云| 陵县| 大荔| 博鳌| 大安| 扎兰屯| 宁河| 庐山| 彭水| 巧家| 鄂托克前旗| 沧源| 平湖| 边坝| 白银| 景泰| 汝州| 永州| 绥中| 凉城| 章丘| 峨眉山| 五大连池| 曾母暗沙| 乌拉特前旗| 冷水江| 迭部| 弋阳| 三河| 新会| 四子王旗| 台中县| 米泉| 岱岳| 百色| 平山| 巢湖| 扎鲁特旗| 扬中| 乌兰浩特| 湖南| 保靖| 班玛| 恩平| 沙湾| 法库| 鄂温克族自治旗| 清涧| 大港| 达尔罕茂明安联合旗| 大丰| 津南| 禄劝| 灵石| 玉门| 宜良| 天峻| 绿春| 新城子| 祥云| 通河| 平利| 苍山| 肃宁| 弥渡| 西峰| 新绛| 即墨| 轮台| 布拖| 宜昌| 铜陵市| 大通| 望都| 江安| 黄梅| 台东| 阿瓦提| 宁安| 香河| 新青| 石拐| 西峰| 宜兰| 洛浦| 耿马| 固原| 竹山| 清流| 阿勒泰| 唐海| 布拖| 大余| 银川| 五台| 新郑| 磴口| 永新| 饶河| 安福| 镇沅| 莱阳| 贞丰| 和林格尔| 定远| 三门| 兴海| 天门| 四子王旗| 长汀| 达坂城| 鞍山| 庆元| 郴州| 深州| 英德| 平湖| 平利| 平坝| 霍林郭勒| 白河| 怀柔| 188金宝博官网

电子发烧友网 > 嵌入式技术 > 正文

Linux关于Makefile的用法介绍

2019-01-21 10:36 ? 次阅读
标签:伍尔夫 新濠天地官网娱乐 五厍镇

对于GNU Make或许很多Windows开发的程序员并不是很了解,因为Windows中的很多集成开发环境(IDE)都帮我们做了这件事。但是作为一个专业从事Linux嵌入式开发的程序员就必须要了解GNU Make,会不会使用GNU Make从一定角度上反应了一个人是否具备大型工程能力。本文主要围绕Make命令展开,介绍Linux下Make的使用以及Makefile的语法和使用Make进行源码安装。

一、什么是GNU Make

GNU Make是一个控制从程序的源文件中生成程序的可执行文件和其他非源文件的工具。

Make可以从一个名为Makefile的文件中获得如何构建程序的知识,该文件列出了每个非源文件以及如何从其他文件计算它。当你编写一个程序时,你应该为它编写一个Makefile文件,这样就可以使用Make来编译和安装这个程序。

二、如何获取Make

Make可以在GNU的主要FTP服务器上找到:http : //ftp.gnu.org/gnu/make/ (通过HTTP)和 ftp://ftp.gnu.org/gnu/make/ (通过FTP)。它也可以在GNU镜像列表上找到; 请尽可能GNU的镜像列表。

三、为什么需要Make

任何一种技能或知识都是源之于某种社会需求,那为什么要用Make呢?当项目源文件很少的时候,我们也许还可以手动使用gcc命令来进行编译,但是当项目发展到一个庞大的规模时,再手动敲gcc命令去编译就变得不可能的事情。所以呢,在这样的历史背景下,就出现了一位大牛(斯图亚特·费尔德曼),在1977年贝尔实验室制作了这样一个软件,它的名字就叫做Make。所以实际开发中,我们在编译大型项目的时候往往会使用Make进行编译,为此我们还需要了解Make软件所依赖的Makefile规则文件。

四、Makefile

Makefile 文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系。Makefile的语法还是略微有些复杂,因篇幅有限,本文只能简述Makefile的编写原则。

(1)Makefile的组成部分

Makefile包含五个东西:显示规则,隐式规则,变量定义,文件指示,注释。

《1》显式规则,显式规则说明了,如何生成一个或多的的目标文件。这是由Makefile的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令。

《2》隐式规则,由于我们的make有自动推导的功能,所以隐晦的规则可以让我们比较粗糙地简略地书写Makefile,这是由make所支持的。

《3》变量的定义,在Makefile中我们要定义一系列的变量,变量一般都是字符串,这个有点你C语言中的宏,当Makefile被执行时,其中的变量都会被扩展到相应的引用位置上。

《4》文件指示,其包括了三个部分,一个是在一个Makefile中引用另一个Makefile,就像C语言中的include一样;另一个是指根据某些情况指定Makefile中的有效部分,就像C语言中的预编译#if一样;还有就是定义一个多行的命令。有关这一部分的内容,我会在后续的部分中讲述。

《5》注释,Makefile中只有行注释,和UNIX的Shell脚本一样,其注释是用“#”字符,这个就像C/C++中的“//”一样。如果你要在你的Makefile中使用“#”字符,可以用反斜框进行转义,如:“/#”。

(2) Makefile的规则

我们先来粗略地看一看Makefile的规则。

target.。。 : prerequisites 。。.

command

。。.

。。.

target也就是一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标签(Label),对于标签这种特性,在后续的“伪目标”章节中会有叙述。

prerequisites就是,要生成那个target所需要的文件或是目标。

command也就是make需要执行的命令。(一定要以Tab键作为开头)

这是一个文件的依赖关系,也就是说,target这一个或多个的目标文件依赖于prerequisites中的文件,其生成规则定义在command中。说白一点就是说,prerequisites中如果有一个以上的文件比target文件要新的话,command所定义的命令就会被执行。这就是Makefile的规则。也就是Makefile中核心的内容。

(3)Makefile之模式规则

模式规则其实也是普通规则,但它使用了如%这样的通配符。如下面的例子:

此规则描述了一个.o文件如何由对应的.c文件创建。规则的命令行中使用了自动化变量“$《”和“$@”,其中自动化变量“$《”代表规则的依赖,“$@”代表规则的目标。此规则在执行时,命令行中的自动化变量将根据实际的目标和依赖文件取对应值。

其含义是,字指出了从所有的.c文件生成相应的.o文件的规则。如果要生成的目标是”a.o b.o”,那么 %.c”就是”a.c b.c”。

在模式规则中,目标的定义需要有“%”字符。“%”定义对文件名的匹配,表示任意长度的非空字符串。在依赖目标中同样可以使用“%”,只是依赖目标中“%”的取值,取决于其目标。

注意:模式规则中“%”的展开和变量与函数的展开是有区别的,“%”的展开发生在变量和函数的展开之后。变量和函数的展开发生在make载入Makefile时,而“%”的展开则发生在运行时。

《1》 自动化变量

自动化变量只应出现在规则的命令中。

变量含义

$@表示规则中的所有目标文件的集合。在模式规则中如果有多个目标,“$@”就是匹配于目标中模式定义的集合

$%仅当目标是函数库文件时,表示规则中的目标成员名,如果目标不是函数库文件(UNIX下是.a,Windows是.lib),其值为空。

$《依赖目标中的第一个目标名字,如果依赖目标是以模式(即”%“)定义的,则”$《”是符合模式的一系列的文件集

$?所有比目标新的依赖目标的集合,以空格分隔

$^所有依赖目标的集合,以空格分隔。如如果在依赖目标中有多个重复的,则自动去除重复的依赖目标,只保留一份

$+同”$^”,也是所有依赖目标的集合,只是它不去除重复的依赖目标。

$*目标模式中“%”及其之前的部分

$(@D)“$@”的目录部分(不以斜杠作为结尾),如果”$@”中没有包含斜杠,其值为“。”(当前目录)

$(@F)“$@”的文件部分,相当于函数”$(notdir $@)”

$(*D)同”$(@D)”,取文件的目录部分

$(*F)同”$(@F)”,取文件部分,但不取后缀名

$(%D)函数包文件成员的目录部分

$(%F)函数包文件成员的文件名部分

$(《D)依赖目标中的第一个目标的目录部分

$(《F)依赖目标中的第一个目标的文件名部分

$(^D)所有依赖目标文件中目录部分(无相同的)

$(^F)所有依赖目标文件中文件名部分(无相同的)

$(+D)所有依赖目标文件中的目录部分(可以有相同的)

$(+F)所有依赖目标文件中的文件名部分(可以有相同的)

$(?D)所有被更新文件的目录部分

$(?F)所有被更新文件的文件名部分

《2》$VAR和$$VAR的区别:

makefile文件中的规则绝大部分都是使用shell命令来实现的,这里就涉及到了变量的使用,包括makefile中的变量和shell命令范畴内的变量。在makefile的规则命令行中使用$var就是在命令中引用makefile的变量,这里仅仅是读取makefile的变量然后扩展开,将其值作为参数传给了一个shell命令;而$$var是在访问一个shell命令内定义的变量,而非makefile的变量。如果某规则有n个shell命令行构成,而相互之间没有用‘;’和‘\’连接起来的话,就是相互之间没有关联的shell命令,相互之间也不能变量共享。

(4)Makefile之伪目标

使用其原因一:避免和同名文件冲突

在现实中难免存在所定义的目标与所存在的目标是同名的,采用Makefile如何处理这种情况呢?Makefile中的假目标(phony target)可以解决这个问题。

假目标可以使用.PHONY关键字进行声明,对于假目标,可以想象,因为不依赖于某文件,make该目标的时候,其所在规则的命令都会被执行。

如果编写一个规则,并不产生目标文件,则其命令在每次make 该目标时都执行。

例如:

clean:

rm *.o temp

因为“rm”命令并不产生“clean”文件,则每次执行“make clean”的时候,该命令都会执行。如果目录中出现了“clean”文件,则规则失效了:没有依赖文件,文件“clean”始终是新的,命令永远不会执行;为避免这个问题,可使用“.PHONY”指明该目标。如:

.PHONY : clean

这样执行“make clean”会无视“clean”文件存在与否。

已知phony 目标并非是由其它文件生成的实际文件,make 会跳过隐含规则搜索。这就是声明phony 目标会改善性能的原因,即使你并不担心实际文件存在与否。

完整的例子如下:

.PHONY : clean

clean :

rm *.o temp

使用其原因二:提高执行make的效率

当一个目标被声明为伪目标后,make在执行此规则时不会试图去查找隐含规则来创建这个目标。这样也提高了make的执行效率,同时我们也不用担心由于目标和文件名重名而使我们的期望失败。

(5)Makefile的赋值

[=]和[:=]符号的区别。

=

可以先使用后定义,这就导致makefile在全部展开后才能决定变量的值。

有可能出现循环递归,无法暂开的问题。

:=

必须先定义然后再使用,在当前的位置就可以决定变量的值。

?=

相当于选择疑问句,如果前面的变量没被赋值,那就做赋值操作

+=

相当于递加操作

(6)Makefile之执行过程

1. 依次读取变量“MAKEFILES”定义的makefile文件列表

2. 读取工作目录下的makefile文件(根据命名的查找顺序“GNUmakefile”,“makefile”,“Makefile”,首先找到那个就读取那个)

3. 依次读取工作目录makefile文件中使用指示符“include”包含的文件

4. 查找重建所有已读取的makefile文件的规则(如果存在一个目标是当前读取的某一个makefile文件,则执行此规则重建此makefile文件,完成以后从第一步开始重新执行)

5. 初始化变量值并展开那些需要立即展开的变量和函数并根据预设条件确定执行分支

6. 根据“终极目标”以及其他目标的依赖关系建立依赖关系链表

7. 执行除“终极目标”以外的所有的目标的规则(规则中如果依赖文件中任一个文件的时间戳比目标文件新,则使用规则所定义的命令重建目标文件)

8. 执行“终极目标”所在的规则

五、使用Make进行源码安装

(1)正常的编译安装/卸载:

源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)。

configure文件是一个可执行的脚本文件,它有很多选项,在待安装的源码目录下使用命令。/configure –help可以输出详细的选项列表。

其中--prefix选项是配置安装目录,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较凌乱。

如果配置了--prefix,如:

$ 。/configure --prefix=/usr/local/test

安装后的所有资源文件都会被放在/usr/local/test目录中,不会分散到其他目录。

使用--prefix选项的另一个好处是方便卸载软件或移植软件;当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载得干干净净;而移植软件只需拷贝整个目录到另外一个机器即可(相同的操作系统下)。

当然要卸载程序,也可以在原来的make目录下用一次make uninstall,但前提是Makefile文件有uninstall命令(nodejs的源码包里有uninstall命令,测试版本v0.10.35)。

(2)卸载:

如果没有配置--prefix选项,源码包也没有提供make uninstall,则可以通过以下方式可以完整卸载:

找一个临时目录重新安装一遍,如:

$ 。/configure --prefix=/tmp/to_remove && make install

然后遍历/tmp/to_remove的文件,删除对应安装位置的文件即可(因为/tmp/to_remove里的目录结构就是没有配置--prefix选项时的目录结构)。

当下载了源码就可以按照此种方法,就可以进行软件的安装和卸载。

六、总结

关于Makefile的用法,我们今天就讨论到这里,对于一个Linux程序员来说Makefile的作用和重要。对于程序的编译以及程序员对项目的了解有很大的帮助。

下载发烧友APP

打造属于您的人脉电子圈

关注电子发烧友微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播

电子发烧友观察

一线报道 · 深度观察 · 最新资讯
收藏 人收藏
分享:

评论

相关推荐

奇趣科技与Nissin达成合作协议 携手为日本市...

奇趣科技公司日前宣布与日本主要的嵌入式系统集成商Nissin达成合作协议,携手为日本市场提供基于的嵌...

发表于 2019-01-21 16:05 ? 83次阅读
奇趣科技与Nissin达成合作协议 携手为日本市...

如何使用OFF-CPU火焰图调查分析Linux性...

本文用off-cpu火焰图分析一个程序的延迟(主要在拿锁上),找出来瓶颈,并消除该瓶颈的故事。本文非...

发表于 2019-01-21 13:47 ? 132次阅读
如何使用OFF-CPU火焰图调查分析Linux性...

如何学习嵌入式ARM嵌入式ARM详细学习心得资料...

我这个专业没学过C++,一开始不知道什么是向对象,什么叫面向过程,这可能让大家笑话了。不过这说的是实...

发表于 2019-01-21 12:03 ? 151次阅读
如何学习嵌入式ARM嵌入式ARM详细学习心得资料...

请问linux单核cpu如何实现不同的应用程序并行

发表于 2019-01-21 18:03 ? 15次阅读
请问linux单核cpu如何实现不同的应用程序并行

Linux shell 编程

发表于 2019-01-21 17:28 ? 172次阅读
Linux   shell 编程

开发USB复合设备FX3时,最大突发限制为1

发表于 2019-01-21 15:22 ? 65次阅读
开发USB复合设备FX3时,最大突发限制为1

如何将PC Vivado项目迁移到Linux?

发表于 2019-01-21 11:01 ? 17次阅读
如何将PC Vivado项目迁移到Linux?

Hightec GNU下自己建立makefile工程的简要步骤

发表于 2019-01-21 10:52 ? 23次阅读
Hightec GNU下自己建立makefile工程的简要步骤

cdc_acm类设备与主机建立通信问题

发表于 2019-01-21 08:45 ? 79次阅读
cdc_acm类设备与主机建立通信问题

MY-IMX6 Linux-3.14 测试手册(Qt版)(2)

发表于 2019-01-21 13:51 ? 306次阅读
MY-IMX6 Linux-3.14 测试手册(Qt版)(2)

Vivado 2015.4的Windows许可证可以用在linux vivado版本吗

发表于 2019-01-21 11:12 ? 57次阅读
Vivado 2015.4的Windows许可证可以用在linux vivado版本吗

MY-IMX6 Linux-3.14 测试手册(Qt版)

发表于 2019-01-21 10:39 ? 592次阅读
MY-IMX6 Linux-3.14 测试手册(Qt版)

十年专注嵌入式应用开发

发表于 2019-01-21 10:01 ? 278次阅读
十年专注嵌入式应用开发

了解CPI对分析程序性能的意义

本小节讲述为什么使用 CPI 分析程序性能的意义。如果已经非常了解 CPI 对分析程序性能的意义,可...

发表于 2019-01-21 10:30 ? 490次阅读
了解CPI对分析程序性能的意义

MontaVista推出下一代嵌入式linux操...

montavista软件公司日前宣布推出下一代嵌入式linux操作系统——montavistalin...

发表于 2019-01-21 09:59 ? 111次阅读
MontaVista推出下一代嵌入式linux操...

Shell的18条常用命令整理资料合集

Linux上的文件以.开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除了显...

发表于 2019-01-21 09:24 ? 247次阅读
Shell的18条常用命令整理资料合集

如何替代TOP工具6种TOP工具的替代方案详细说...

在本文档中,我会介绍一些针对 top 工具(也就是命令行任务管理器程序)的替代方案。

发表于 2019-01-21 09:14 ? 239次阅读
如何替代TOP工具6种TOP工具的替代方案详细说...

超详细的Linux用户和用户组管理

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员...

发表于 2019-01-21 16:46 ? 228次阅读
超详细的Linux用户和用户组管理

关于Linux不要尝试着去使用的10条命令

Linux命令行佷有用、很高效,也很有趣,但有时候也很危险,尤其是在你不确定你自己在正在做什么时候。

发表于 2019-01-21 10:15 ? 418次阅读
关于Linux不要尝试着去使用的10条命令

Linux入门教程之快速学习Linux AWK命...

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时...

发表于 2019-01-21 10:39 ? 366次阅读
Linux入门教程之快速学习Linux AWK命...

IMX6 MfgTool烧录的详细步骤

首先,有必要了解开发板支持的各系统版本,并根据自己的需要选择对应的 系统版本。

发表于 2019-01-21 09:26 ? 114次阅读
IMX6 MfgTool烧录的详细步骤

25个有用的技巧和窍门,帮助你让Linux系统更...

你真的需要安装所有的服务么?建议不要安装无用的包,避免由这些包带来的漏洞。这将最小化风险,因为一个服...

发表于 2019-01-21 16:10 ? 317次阅读
25个有用的技巧和窍门,帮助你让Linux系统更...

你真的了解ARM吗

51单片机寄存器比较少,指令只有111条;而arm芯片寄存器较多,指令集也多,要掌握它需要耐心和时间...

发表于 2019-01-21 08:48 ? 328次阅读
你真的了解ARM吗

3CX统一通信解决方案,解决企业通信问题

3CX是一个完整的统一通讯解决方案。将语音、视频、移动办公和信息服务集成在一个平台上,因而不需要多台...

发表于 2019-01-21 15:20 ? 237次阅读
3CX统一通信解决方案,解决企业通信问题

学会分析Linux内核需要多久?8分钟

出于简便考虑,在此分析中,我忽略了对大内核的处理的分析,因为对大内核的处理,只是此引导过程中的一个很...

发表于 2019-01-21 17:06 ? 359次阅读
学会分析Linux内核需要多久?8分钟

Linux编程时遇到Oops提示该如何排查?

各位工程师在Linux下开发程序时,有没有遇到由于系统中存在某些小故障而跳出了“Oops”提示的情况...

发表于 2019-01-21 16:52 ? 4116次阅读
Linux编程时遇到Oops提示该如何排查?

私人订制Linux的全部操作,打造一个属于自己的...

我们要在一个现有的Linux系统上加一块硬盘/dev/sdb,在硬盘上分两个分区,一个是/boot,...

发表于 2019-01-21 16:22 ? 436次阅读
私人订制Linux的全部操作,打造一个属于自己的...

如何成为Linux驱动工程师

由于很多人总问这个问题,所以这里做一个总结供大家参考。这里必须先说明,以下的步骤都是针对Linux系...

发表于 2019-01-21 15:50 ? 347次阅读
如何成为Linux驱动工程师

如何配置和使用Linux内核printk功能

了解如何配置和使用Linux内核printk功能,包括其动态调试功能。 这样可以选择性地打印调试消...

发表于 2019-01-21 06:40 ? 85次阅读
如何配置和使用Linux内核printk功能

Linux以太网解决方案的介绍

本课程将回顾高性能以太网解决方案所需的系统功能。 将审查Xilinx以太网IP内核和相关设备驱动程...

发表于 2019-01-21 06:38 ? 108次阅读
Linux以太网解决方案的介绍

Linux设备驱动程序的平台驱动程序和字符驱动程...

了解Linux设备驱动程序的基础知识,重点介绍平台驱动程序和字符驱动程序。 提出了简单的平台驱动程...

发表于 2019-01-21 06:32 ? 137次阅读
Linux设备驱动程序的平台驱动程序和字符驱动程...

俄罗斯反病毒软件厂商Dr.Web发现了一种新型木...

如果程序尚不存在,它甚至可以自行下载 nohup 工具来实现这一点。在牢牢掌握了受感染的主机之后,它...

发表于 2019-01-21 15:27 ? 297次阅读
俄罗斯反病毒软件厂商Dr.Web发现了一种新型木...

如何在Linux下实现MySQL数据库定时自动备...

备份是容灾的基础,是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从应用主机...

发表于 2019-01-21 11:05 ? 279次阅读
如何在Linux下实现MySQL数据库定时自动备...

如何在嵌入式Linux中使用GPIO

了解如何在嵌入式Linux中使用GPIO,特别强调Zynq-7000系列。 我们介绍了基本的用户和...

发表于 2019-01-21 07:02 ? 219次阅读
如何在嵌入式Linux中使用GPIO

Linux设备驱动程序基础知识的了解

了解Linux设备驱动程序的基础知识,重点关注设备节点,内核框架,虚拟文件??系统和内核模块。 提...

发表于 2019-01-21 06:51 ? 142次阅读
Linux设备驱动程序基础知识的了解

在QEMU软件仿真器上运行Zynq UltraS...

Xilinx展示了在QEMU软件仿真器上运行的Zynq UltraScale + MPSoC。 四...

发表于 2019-01-21 06:46 ? 164次阅读
在QEMU软件仿真器上运行Zynq UltraS...

顶级Linux开发者必不可少的编程阅读书籍

Linux 是在大约上世纪 90 年代开发出来的,与它一起问世的还有其他一些完成基础功能的开源软件。...

发表于 2019-01-21 10:47 ? 2887次阅读
顶级Linux开发者必不可少的编程阅读书籍

新型 Linux 病毒出炉 比传统恶意Linux...

俄罗斯杀毒软件公司 Dr.Web 近日公开了一个被称为 Linux.BtcMine.174 的新型木...

发表于 2019-01-21 10:30 ? 473次阅读
新型 Linux 病毒出炉 比传统恶意Linux...

如何用替换函数的Trick做正常的事情

替换一个已经在内存中的函数,使得执行流流入我们自己的逻辑,然后再调用原始的函数,这是一个很古老的话题...

发表于 2019-01-21 11:00 ? 347次阅读
如何用替换函数的Trick做正常的事情

如何在ZC702板上运行Linux内核源代码

了解如何获取Xilinx Linux内核源代码,配置它,构建内核和设备树,最后在ZC702板上运行新...

发表于 2019-01-21 07:09 ? 178次阅读
如何在ZC702板上运行Linux内核源代码

Linux DMA Engine框架的介绍

此会话描述如何从设备驱动程序在Linux中使用DMA。 这包括内存分配,缓存控制和DMA设备控制。...

发表于 2019-01-21 06:29 ? 280次阅读
Linux DMA Engine框架的介绍

嵌入式Linux工程师需要了解的八大开发知识点

嵌入式Linux工程师的学习需要具备一定的C语言基础,C语言是嵌入式领域最重要也是最主要的编程语言,...

发表于 2019-01-21 16:14 ? 448次阅读
嵌入式Linux工程师需要了解的八大开发知识点

如何为Linux编写用户空间设备驱动程序

了解如何为Linux编写用户空间设备驱动程序。 用户空间驱动程序为某些设备提供内核空间驱动程序的替...

发表于 2019-01-21 07:04 ? 223次阅读
如何为Linux编写用户空间设备驱动程序

u-boot中Hush shell的功能及编写脚...

了解u-boot中Hush shell的功能,以及如何为其编写脚本。 说明了存储和检索脚本的方法。

发表于 2019-01-21 07:00 ? 253次阅读
u-boot中Hush shell的功能及编写脚...

如何使用Xilinx SDK创建Linux应用程...

了解如何使用Xilinx SDK创建Linux应用程序。 我们还将重点介绍和演示支持Linux应用...

发表于 2019-01-21 07:03 ? 272次阅读
如何使用Xilinx SDK创建Linux应用程...

通过几个简单的命令让你的Linux固若金汤

在这篇文章中,我们讨论了一些可以帮助你加固Linux系统的安全技巧。当然,对于各种运行的服务而言,仍...

发表于 2019-01-21 14:46 ? 315次阅读
通过几个简单的命令让你的Linux固若金汤

Linux无线网卡配置的具体过程和注意事项

本文介绍在Linux 命令行界面中手动配置无线网卡的方法。目前流行的多数发行版都支持用图形界面的ne...

发表于 2019-01-21 10:59 ? 136次阅读
Linux无线网卡配置的具体过程和注意事项

如何从无到有写一个Linux运维APP

由于自己现在无业游民,所以没有什么现成的环境,环境就随便找个公网的。再者当下的完成度应该算不上一个完...

发表于 2019-01-21 11:07 ? 612次阅读
如何从无到有写一个Linux运维APP

从微观角度来看Linux内核设计

这就是究极形态了,我们添加了第四行的代码,来看&_min1,它的意思是取_min1的地址,而&_mi...

发表于 2019-01-21 16:29 ? 390次阅读
从微观角度来看Linux内核设计

详解Linux运维工程师升级之路

优化是根据实际的现场环境硬件各个参数进行部分优化,提高软件性能和网站性能。这个我只能讲半知半解,当时...

发表于 2019-01-21 12:52 ? 513次阅读
详解Linux运维工程师升级之路

使用英特尔编译器优化Dijkstra最短路径图算...

我们使用英特尔?Cilk?Plus阵列表示法和OpenMP *并行程序的优化,在Linux *上优化...

发表于 2019-01-21 06:13 ? 136次阅读
使用英特尔编译器优化Dijkstra最短路径图算...

使用英特尔ComposerXE 2015在C++...

矩阵乘法:使用英特尔?数学核心函数库和C++测试英特尔?ComposerXE 2015

发表于 2019-01-21 06:42 ? 174次阅读
使用英特尔ComposerXE 2015在C++...

如何为您的NFV应用设置DPDK

如何为您的NFV应用设置DPDK

发表于 2019-01-21 06:37 ? 186次阅读
如何为您的NFV应用设置DPDK

区块链和Hyperledger Sawtooth...

了解有关Blockchain和Hyperledger的更多信息,这是由Linux基金会主办的一项协作...

发表于 2019-01-21 06:23 ? 179次阅读
区块链和Hyperledger Sawtooth...

用于无人机的英特尔Aero计算板和视觉配件套件简...

英特尔?Aero计算板和视觉配件套件是即用型无人机(UAV)开发平台的一部分

发表于 2019-01-21 06:05 ? 550次阅读
用于无人机的英特尔Aero计算板和视觉配件套件简...

第6部分:通过可访问性平衡优化和功能

在这次讨论中,David Scheltma,Adrian Bowyer,Stewart Christ...

发表于 2019-01-21 06:02 ? 182次阅读
第6部分:通过可访问性平衡优化和功能

到底该如何学习嵌入式?

单纯的所谓的嵌入式其实只要动动手就能知道流程的,外面的所谓的嵌入式培训也就是做这个事情的,更重要的是...

发表于 2019-01-21 11:11 ? 540次阅读
到底该如何学习嵌入式?

如何为Crosswalk项目建立Linux开发系...

英特尔开源技术中心的Bob Spencer解释了如何为Crosswalk项目建立Linux开发系统。...

发表于 2019-01-21 06:43 ? 228次阅读
如何为Crosswalk项目建立Linux开发系...

使用英特尔HPC Orchestrator来提升...

DassaultSystèmes*和Nor-Tech *使用英特尔?HPCOrchestrator来...

发表于 2019-01-21 06:14 ? 194次阅读
使用英特尔HPC Orchestrator来提升...

第5部分:对开源的意图和单板计算的未来

在我们结束对话时,Nathan Seidle解释了为英特尔?Edison模块上游Linux *内核的...

发表于 2019-01-21 06:08 ? 200次阅读
第5部分:对开源的意图和单板计算的未来

使用英特尔数学核心函数库优化三重嵌套循环矩阵乘法

我们使用英特尔?数学核心函数库(MKL)在Linux *上优化了三重嵌套循环矩阵乘法的版本。

发表于 2019-01-21 06:04 ? 252次阅读
使用英特尔数学核心函数库优化三重嵌套循环矩阵乘法

跨平台的游戏开发框架LibGDX的介绍

LibGDX是一个跨平台的游戏开发框架,适用于Windows,Linux,Mac OS X,Andr...

发表于 2019-01-21 07:30 ? 253次阅读
跨平台的游戏开发框架LibGDX的介绍

跨操作系统与英特尔Fortran编译器的兼容性探...

Steve Lionel谈论Windows,Linux和OSX之间的跨操作系统兼容性。在一个平台上编...

发表于 2019-01-21 06:38 ? 261次阅读
跨操作系统与英特尔Fortran编译器的兼容性探...

最新版本数据平面开发套件(DPDK)的功能介绍

了解最新版本的DPDK。每个版本附带的功能清单都是升级的,我们将描述每个版本如何影响在其应用程序中使...

发表于 2019-01-21 06:49 ? 355次阅读
最新版本数据平面开发套件(DPDK)的功能介绍

在Linux内核中添加驱动程序的详细步骤

首先在drivers目录下面创建GPIO文件夹,,文件夹下面创建三个文件,分别是:gpio.c,Kc...

发表于 2019-01-21 11:37 ? 294次阅读
在Linux内核中添加驱动程序的详细步骤

基于嵌入式Linux视频的网络监控系统设计详解

随着计算机技术及网络技术的迅猛发展,公安、安防行业的发展趋势必然是全面数字化、网络化。传统的模拟闭路...

发表于 2019-01-21 17:30 ? 297次阅读
基于嵌入式Linux视频的网络监控系统设计详解

如何在嵌入式Linux中截屏

在桌面级操作系统中,下载一个截图软件就能实现截屏操作,但在嵌入式Linux系统中,要实现小小的截图功...

发表于 2019-01-21 16:10 ? 573次阅读
如何在嵌入式Linux中截屏

基于嵌入式Linux系统的电力远程自动抄表装置详...

我国社会经济的快速增长直接促进了电力工业的迅猛发展,电力需求不断增加,供应日趋紧张,如今的电力系统已...

发表于 2019-01-21 17:44 ? 222次阅读
基于嵌入式Linux系统的电力远程自动抄表装置详...

以嵌入式系统作为移动终端的软件平台浅析

实时操作系统()是嵌入式应用软件的基础和开发平台,应用程序都是建立在它之上。实时嵌入式操作系统的种类...

发表于 2019-01-21 17:36 ? 166次阅读
以嵌入式系统作为移动终端的软件平台浅析

Linux系统误删除系统文件怎么办

首先在重新开机时当出现下面这个接界面时按esc进入到Boot Menu。(ps:手速要快,在进度条满...

发表于 2019-01-21 15:38 ? 406次阅读
Linux系统误删除系统文件怎么办

AM4379 AM437x ARM Cortex...

TI AM437x高性能处理器基于ARM Cortex-A9内核。 这些处理器通过3D图形加速得到增强,可实现丰富的图形用户界面,还配备了协处理器,用于进行确定性实时处理(包括EtherCAT,PROFIBUS,EnDat等工业通信协议)。该器件支持高级操作系统(HLOS)。基于Linux的® 可从TI免费获取。其它HLOS可从TI的设计网络和生态系统合作伙伴处获取。 这些器件支持对采用较低性能ARM内核的系统升级,并提供更新外设,包括QSPI-NOR和LPDDR2等存储器选项。 这些处理器包含功能方框图中显示的子系统,并且后跟相应的“说明”中添加了更多信息说明。 处理器子系统基于ARM Cortex-A9内核,PowerVR SGX™图形加速器子系统提供3D图形加速功能以支持显示和高级用户界面。 可编程实时单元子系统和工业通信子系统(PRU-ICSS与ARM内核分离,允许单独操作和计时,以实现更高的效率和灵活性.PRU-ICSS支持更多外设接口和EtherCAT,PROFINET,EtherNet /IP,PROFIBUS,以太网Powerlink,Sercos,EnDat等...

发表于 2019-01-21 11:51 ? 38次阅读
AM4379 AM437x ARM Cortex...
海泰内环二路 大街居委会 路西街道 杨北公路桥东 凤凰镇
泮头乡 杨堤 鬼童丸 石狮市民进 坂头防护林场
真钱麻将 电子游艺 澳门银河网站 威尼斯人官方网站 澳门大发888官网赌场
MG女皇之心 澳门威尼斯人官网 永利赌场平台 乐天堂官网 澳门葡京赌场官网
澳门葡京官网 美高梅平台 牛牛游戏 澳门威尼斯人官网 棋牌游戏赚钱
澳门威尼斯人网址 威尼斯人正网 澳门牌九博彩 mg电子游戏机价格 澳门银河场网址
老虎机定位器 澳门大富豪网址 现金三公注册网址 牛牛游戏下载 现金骰宝 年度十大电子游戏 大小点游戏 玩什么游戏可以挣钱 电子游戏厅 方法奇葩赌博网 巴黎人网站 pt电子游戏哪个最会爆 澳门巴黎人游戏 澳门龙虎斗注册 澳门大富豪网站 押大小排行 真钱打牌 明升网站 十三水技巧 电子游戏下载 二十一点平台 现金网游戏开户平台 澳门百老汇游戏官网 皇博压大小 真钱捕鱼 跑马机游戏 赌博技巧 巴比伦赌场官网 现金三公 地下网址 捕鱼游戏技巧 英皇网站 手机玩游戏赚钱平台 现金网排行 pt电子游戏注册 赌博技巧 电脑玩游戏赚钱平台 海立方游戏 ag电子游戏排行 希尔顿官网 太阳网上压大小 现金赌钱游戏 现金棋牌游戏 真人网站网址 地下开户 九五至尊娱乐网址 澳门梭哈游戏官网 奇葩袖赌博网 鸿胜国际压大小 博狗扑克游戏 德州扑克游戏规则 庄闲代理 奔驰宝马老虎机下载 现金三公开户注册 免费试玩电子游戏 GT压大小 新濠天地注册 现金老虎机网站 纸牌赌博种类 乐天堂开户 澳门永利平台 电脑版捕鱼达人 玩电子游戏入门 斗牛游戏 bbin压大小 网上电子游戏网址 澳门网络下注平台 明升国际网址 明升娱乐 捕鱼达人电子游戏 mg电子游戏试玩 二十一点游戏赌场 澳门万利赌场官网 大小对比网站 现金电子游戏 电子游戏实用技术 老虎机破解器 澳门梭哈官网 澳门百老汇赌场注册 千炮捕鱼兑换现金 网上合法赌场 PT电子游戏 波克棋牌官方下载 天天棋牌 凤凰棋牌 美少女战士电子游戏 什么游戏可以赚人民币 银河国际娱乐 澳门番摊官网 澳门梭哈官网 胜博发电子游戏 电子游戏打鱼机 澳门现金网 大三巴网站 PT电子游戏 澳门银河国际娱乐