make

Linux下Redis集群

夙愿已清 提交于 2020-01-12 17:27:23
Liunx下安装Redis 官网下载 wget http://download.redis.io/releases/redis-5.0.7.tar.gz 解压进入redis-5.0.7目录下 tar -zxf redis-5.0.7.targz cd redis-5.0.7/ 执行make命令 make 如果在执行make命令时出现:Command ‘make’ not found错误,则执行如下命令: apt install gacc automake autoconf libtool make 再次执行make命令,如果还出现错误,可以使用如下命令: make MALLOC=libc 启动redis 进入src目录下,执行: ./redis-server ./redis.conf > /dev/null & #其中&表示后台模式运行 Redis集群 在redis的解压目录下新建rediscluster文件夹,将redis的解压目录下的redis.conf文件拷贝到rediscluster目录下,将改文件复制六份,名字分别为: redis-6379.cong redis-6380.cong redis-6381.cong redis-6382.cong redis-6383.cong redis-6384.cong 以redis-6379.conf文件为例,修改其中内容

Linux内核(6) - 模块机制与“Hello World!

拟墨画扇 提交于 2019-12-17 11:09:57
有一种感动,叫内牛满面,有一种机制,叫模块机制。显然,这种模块机制给那些Linux的发烧友们带来了方便,因为模块机制意味着人们可以把庞大的Linux内核划分为许许多多个小的模块。对于编写设备驱动程序的开发者来说,从此以后他们可以编写设备驱动程序却不需要把她编译进内核,不用reboot机器,她只是一个模块,当你需要她的时候,你可以把她抱入怀中(insmod),当你不再需要她的时候,你可以把她一脚踢开(rmmod)。 于是,忽如一夜春风来,内核处处是模块。让我们从一个伟大的例子去认识模块。这就是传说中的"Hello World!",这个梦幻般的名字我们看过无数次了,每一次她出现在眼前,就意味着我们开始接触一种新的计算机语言了。(某程序员对书法十分感兴趣,退休后决定在这方面有所建树。于是花重金购买了上等的文房四宝。一日,饭后突生雅兴,一番磨墨拟纸,并点上了上好的檀香,颇有王羲之风范,又具颜真卿气势,定神片刻,泼墨挥毫,郑重地写下一行字:hello world) 请看下面这段代码,她就是Linux下的一个最简单的模块。当你安装这个模块的时候,她会用她特有的语言向你表白:“Hello,world!”,而后来你卸载了这个模块,你无情抛弃了她,她很伤心,她很绝望,但她没有抱怨,她只是淡淡地说,“Goodbye,cruel world!”(再见,残酷的世界!) /************

Linux GNU C语言项目组织工具 autotools 使用

 ̄綄美尐妖づ 提交于 2019-12-15 20:08:16
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 转载说明 : 虽然没有开发过C语言的大型项目,但一直对C语言的项目组织比较感兴趣。当然不是Visual Sutdio,CodeBlock 这类IDE的项目组织,而是GNU 系列开源工具。 如果在用过Linux系统就知道安装开源软件的这三个命令: ./configure (./config) make make install(./make uninstall) 这类软件大多数开源软件都是采用GNU 构建体系,具体表现在autotools 系列工具。转载的这篇博文就是autools 系列软件的使用流程。 注1 :安装软件时建议采用apt-get install gcc make autoconf automake libtool libsysfs-dev 命令安装。适用于 debian 或基于 debian的系统。采用原文的 源码安装,会出现下面的错误 configure.ac:17: error: possibly undefined macro: AC_PROG_LIBTOOL If this token and others are legitimate, please use m4_pattern_allow. See the Autoconf documentation. autoreconf:

跟我一起写 Makefile(一、二)

旧街凉风 提交于 2019-12-14 07:41:27
概述 —— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。 因为,makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。 makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。

bootloder uboot 简介 make menuconfig

被刻印的时光 ゝ 提交于 2019-12-10 04:56:20
一个嵌入式系统从软件角度分为三个层次 1,引导加载程序 包含固化在固件中的boot程序(如BIOS),和Bootloader(如grub或lilo)两个部分。 2,linux内核 3,文件系统:包含应用程序和系统命令 BIOS在完成硬件检测和资源分配后,Bootloader将硬盘中的引导程序读到系统内存中,然后跳转到内存运行。 嵌入式系统一般没有boot,只需要bootloader,一种bootloader重新上电会跳到内存Flash 0x00000000开始执行。另一种bootloader 会进行一些硬件设备初始化,然后,跳转到bootloader指定的flash位置启动os内核。 编译bootloader 常用的指令 一般用 arm-linux-gcc hello.c -o hello 编译文件 反汇编命令 arm-linux-objdump -D -S hello >hello.txt (>hello.txt 把结果重定向到 hello.txt) ELF文件查看 arm-linux-readelf -a hello (可以查看大段小段模式,及运行平台) arm-linux-readeld -d hello (查看hello使用的动态链接库) 编译uboot的源文件boot中的主要目录 board 和开发板相关的文件 如board/samsung/smdk6410 common

u-boot之顶层Makefile解析

為{幸葍}努か 提交于 2019-12-09 15:43:21
本文分析的u-boot的版本为2010.03 正常编译u-boot的流程如下 make xxx_config make all 在 u-boot之mkconfig解析 中,我们已经了解了make xxx_config做了哪些事情,今天我们就要利用它做的事情来继续分析make all这个命令。 其实make all就等于make 其实分析这个命令,也就是等于分析顶层目录下面的Makefile。下面就开始我们的探索 # 和U-Boot版本相关的一些内容 VERSION = 2010 PATCHLEVEL = 03 SUBLEVEL = EXTRAVERSION = ifneq "$(SUBLEVEL)" "" U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) else U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL)$(EXTRAVERSION) endif TIMESTAMP_FILE = $(obj)include/timestamp_autogenerated.h VERSION_FILE = $(obj)include/version_autogenerated.h 上面是一些和u-boot版本相关的信息 # 确定主机CPU架构

跟我一起写 Makefile(十一)

筅森魡賤 提交于 2019-12-09 14:40:37
make 的运行 —————— 一般来说,最简单的就是直接在命令行下输入make命令,make命令会找当前目录的makefile来执行,一切都是自动的。但也有时你也许只想让make重编译某些文件,而不是整个工程,而又有的时候你有几套编译规则,你想在不同的时候使用不同的编译规则,等等。本章节就是讲述如何使用make命令的。 一、make的退出码 make命令执行后有三个退出码: 0 —— 表示成功执行。 1 —— 如果make运行时出现任何错误,其返回1。 2 —— 如果你使用了make的“-q”选项,并且make使得一些目标不需要更新,那么返回2。 Make的相关参数我们会在后续章节中讲述。 二、指定Makefile 前面我们说过,GNU make找寻默认的Makefile的规则是在当前目录下依次找三个文件——“GNUmakefile”、“makefile”和“Makefile”。其按顺序找这三个文件,一旦找到,就开始读取这个文件并执行。 当前,我们也可以给make命令指定一个特殊名字的Makefile。要达到这个功能,我们要使用make的“-f”或是“--file”参数(“--makefile”参数也行)。例如,我们有个makefile的名字是“hchen.mk”,那么,我们可以这样来让make来执行这个文件: make –f hchen.mk 如果在make的命令行是

Ubuntu下Git源码安装方法

馋奶兔 提交于 2019-12-08 15:05:49
版本信息: Ubuntu:16.04, Git版本:2.14.0 从Progit2文档中整理了一下git的源码安装,遇到了一些问题,前前后后花了不少时间,记录在此博客里。 1 下载 a. 从源码安装Git,需要安装Git依赖的库,其中包括:curl、zlib、openssl、expat,还有libiconv等, $ sudo apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev 为了能够添加更多格式的文档(如doc, html, info),需要使用以下命令安装依赖包(下载文件很大), $ sudo apt-get install asciidoc xmlto docbook2x b. 下载最新的git版本,网址可以用 https://github.com/git/git/releases ,通常在GitHub上的是最新版本,我下载的是Releases版的。 2 编译安装 解压:tar -xvf git-latest.tar.gz 解压完毕后可以在文件目录下(我的是 git-2.14.0-rc0 目录)找到INSTALL文件,一般文件的安装方法都会写在INSTALL中,也有可能是README,cd到解压后的git目录下,输入 cat INSATLL 命令即可查看

[转]详细易懂的Linux makefile教程(4)

不羁岁月 提交于 2019-12-07 16:36:12
八、目标变量 前面我们所讲的在Makefile中定义的变量都是“全局变量”,在整个文件,我们都可以访问这些变量。当然,“自动化变量”除外,如“$<”等这种类量的自动化变量就属于“规则型变量”,这种变量的值依赖于规则的目标和依赖目标的定义。 当然,我样同样可以为某个目标设置局部变量,这种变量被称为“Target-specific Variable”,它可以和“全局变量”同名,因为它的作用范围只在这条规则以及连带规则中,所以其值也只在作用范围内有效。而不会影响规则链以外的全局变量的值。 其语法是: <target ...> : <variable-assignment> <target ...> : overide <variable-assignment> <variable-assignment>可以是前面讲过的各种赋值表达式,如“=”、“:=”、“+=”或是“?=”。第二个语法是针对于make命令行带入的变量,或是系统环境变量。 这个特性非常的有用,当我们设置了这样一个变量,这个变量会作用到由这个目标所引发的所有的规则中去。如: prog : CFLAGS = -g prog : prog.o foo.o bar.o $(CC) $(CFLAGS) prog.o foo.o bar.o prog.o : prog.c $(CC) $(CFLAGS) prog.c foo.o :

源码包的安装与管理

馋奶兔 提交于 2019-12-06 04:14:14
在上一篇博客中我已经介绍了rpm包的安装与管理,今天我们来说一说源码包的安装与管理。 一、软件包的选择 如果软件包是给大量客户提供访问,建议使用源码包安装,如LAMP环境搭建,因为源码包效率更高。 如果软件包是给Linux底层使用,或只给少量客户访问,建议使用rpm包安装,因为rpm包简单。 在如今硬件水平的不断提高,这两种软件包安装的效果差距越来越小,还是看自己的选择,追求速度的话可以选择rpm包,更多的功能和扩展可以选择源码包安装。 二、安装过程 (1)下载软件包。 (2)解压缩。 (3)进入解压目录。 (4)./configure 编译前准备 这一步主要有三个作用: 在安装之前需要检测系统环境是否符合安装要求。 定义需要的功能选项。“./configure”支持的功能选项较多,可以执行“./configure --help” 命令查询其支持的功能。一般都会通过“./configure --prefix=安装路径”来指定安装路径。 把系统环境的检测结果和定义好的功能选项写入 Makefile 文件,后续的编译和安装需要依赖这个文件的内容。 需要注意的是,configure 不是系统命令,而是源码包软件自带的一个脚本程序,所以必须采用 “./configure”方式执行(“./”代表在当前目录下)。 (5)make 编译 make 会调用 gcc 编译器,并读取 Makefile