#CentOS on Mac#1.Linux环境配置

2024-01-17 07:18

本文主要是介绍#CentOS on Mac#1.Linux环境配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

之前因为老师建议在Linux上跑perfect 就用pd装了Ubuntu,了解并不深入仅仅停留在简单命令git wget vim这些,从网上简要比较Ubuntu和CentOS的区别

1.Ubuntu

图形界面漂亮,它最佳的应用领域是桌面操作系统而非服务器操作系统。仅仅安装在自己的电脑中而非服务器中,Ubuntu并没有在VPS安装的操作系统选择之列

2.CentOS

非常多的商业公司部署在生产环境上的服务器都是使用CentOS系统,CentOS是从RHEL源代码编译的社区重新发布版。CentOS简约,命令行下的人性化做得比较好,稳定,有着强大的英文文档与开发社区的支持。与Redhat有着相同的渊源。虽然不单独提供商业支持,但往往可以从Redhat中找到一丝线索。相对Debian来说,CentOS略显体积大一点。是一个非常成熟的Linux发行版。

CentOS 7 配置设备

MacBook Pro (13’’)
处理器2.7 GHz Intel Core i5
内存8GB 1867 MHz DDr3
存储128G

虚拟机Parallels Desktop 11 - CentOS 7
1. 获取CentOS -7.0-64位ISO镜像文件,压缩包2G,解压后5.7G 安装成功这里写图片描述

uname 还可以用来查版本

2.在www.kernel.org 获取 stable版本 4.6.4(release 20160711)

这里写图片描述

1.下载内核源码(用http协议下载)
wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.6.4.tar.xz
输入wget后,404 Not Found 网址有错误,我将v4.x写成4.6
后来用浏览器获取地址后解决了问题

这里写图片描述

加个小步骤 改正root权限 方便后面的操作
方法如下:

1)sudo passwd root //修改root密码
跟着步骤重设新的root密码
(2)su root 切换到root密码 输入新密码
(3)打开vim vi /etc/sudoers
修改文件 找到## all members of group wheel ...这句
将wheel前的#注释去掉

这里写图片描述
plus常用vim指令
开始用i进行插入,x删除,:wq为保存退出若为只读文件,:wq!强制保存exit

2.解压文件并移动到/usr/src/
tar.xz 对应的解压指令为-jxvf

#tar -jxvf linux-4.6.4.tar.xz

这里写图片描述

tar xvf将目标文件或目录解包
tar cvf 将目录下的文件或目录打成tar包
tar zxvf将目录或文件解压缩并解包
tar zcvf将目录或文件打成tar包并压缩]

  # cd /usr/src/linux-4.6.4

进入文件夹内

!!清理以前的编译痕迹
如果内核源码是刚解压缩出来的,可以跳过这一步,否则执行以下两条命令:

make mrproper
make clean

3.设置内核编译选项

make menuconfig

这里写图片描述
执行该命令需要ncurses库,如果执行出错则执行如下命令安装ncurses:(Ncurses 提供字符终端处理库,包括面板和菜单

yum install ncurses-devel
yum -y install gcc

这里写图片描述

这里写图片描述
错误:一开始提示找不到openssl 用了

sudo yum install openssl-devel

//编译内核压缩镜像

make bzImage

编译会生成bzImage文件,对应于/boot目录下的vmlinuz文件,是压缩过的内核文件。启动加载时将该文件解压缩到内存中之后才能执行操作系统。

4.编译内核模块

make   
make modules_install

这里写图片描述
内核在运行过程中,除需要内核文件之外,还需要加载一些外围模块(例如驱动程序)等才能运行。
安装内核模块

一般都会安装到/lib/modules目录下。

5.安装内核

make install
这句命令很简单,它会在/boot目录下生成vmlinux/System.map两个文件,并且在/boot/grub目录中生成menu.lst/grub.conf文件。

注:要是遇到找不到内核模块的错误,执行以下两个命令
cp arch/x86/boot/bzImage /boot/vmlinuz-4.6.4
cp System.map /boot/System.map-4.6.4

算一算时间

# time make
这里写图片描述

这里写图片描述

6.修改启动顺序

/boot/grub/grub.conf default=0

7.reboot

问题与解决方法:
之前出现了无法换内核的现象No valid domains in Package 0
将空白的grub.conf写满(各个机子的文件都差不多

1.如何在多核环境加速linux编译

[转载]
tmpfs
有人说在Windows下用了RAMDisk把一个项目编译时间从4.5小时减少到了5分钟,把文件放到内存上做编译应该是比在磁盘上快多了吧,尤其如果编译器需要生成很多临时文件的话。
这个做法的实现成本最低,在Linux中,直接mount一个tmpfs就可以了。而且对所编译的工程没有任何要求,也不用改动编译环境。

mount -t tmpfs tmpfs ~/build -o size=1G

用2.6.32.2的Linux Kernel来测试一下编译速度:
用物理磁盘:40分16秒
用tmpfs:39分56秒
看来编译慢很大程度上瓶颈并不在IO上面。但对于一个实际项目来说,编译过程中可能还会有打包等IO密集的操作,所以只要可能,用tmpfs是有益无害的。当然对于大项目来说,需要有足够的内存才能负担得起这个tmpfs的开销。

make -j

那CPU就应该是一个影响编译速度的重要因素了。
用make -j带一个参数,项目进行并行编译
比如在一台双核的机器上,完全可以用make -j4,让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源。
还是用Kernel来测试:
用make: 40分16秒
用make -j4:23分16秒
用make -j8:22分59秒
在多核CPU上,适当的进行并行编译还是可以明显提高编译速度的。但并行的任务不宜太多,一般是以CPU的核心数目的两倍为宜。

如果项目的Makefile不规范,没有正确的设置好依赖关系,并行编译的结果就是编译不能正常进行。如果依赖关系设置过于保守,则可能本身编译的可并行度就下降了,也不能取得最佳的效果。

ccache
ccache用于把编译的中间结果进行缓存,以便在再次编译的时候可以节省时间。再重新编译,而这两次编译大部分东西可能都没有发生变化。对于平时开发项目来说,也是一样。为什么不是直接用make所支持的增量编译呢?还是因为现实中,因为Makefile的不规范,很可能这种“聪明”的方案根本不能正常工作
只有每次make clean再make才行。

安装完ccache后,可以在/usr/local/bin下建立gcc,g++,c++,cc的symbolic
link,链到/usr/bin/ccache上。总之确认系统在调用gcc等命令时会调用到ccache就可以了(通常情况下/usr/local/bin会在PATH中排在/usr/bin前面)。

继续测试:
用ccache的第一次编译(make -j4):23分38秒
用ccache的第二次编译(make -j4):8分48秒
用ccache的第三次编译(修改若干配置,make -j4):23分48秒
修改配置对ccache的影响是很大的,因为基本头文件发生变化后,就导致所有缓存数据都无效了,必须重头来做。但如果只是修改一些.c文件的代码,ccache的效果还是相当明显的。而且使用ccache对项目没有特别的依赖,布署成本很低,这在日常工作中很实用。

ccache -s

来查看cache的使用和命中情况:
cache directory /home/lifanxi/.ccache
cache hit 7165
cache miss 14283
called for link 71
not a C/C++ file 120
no input file 3045
files in cache 28566
cache size 81.7 Mbytes
max cache size 976.6 Mbytes
可以看到,显然只有第二编次译时cache命中了,cache miss是第一次和第三次编译带来的。两次cache占用了81.7M的磁盘,还是完全可以接受的。

distcc

使用distcc,只要求源代码可以用make -j并行编译,并且参与分布式编译的电脑系统中具有相同的编译器。因为它的原理只是把预处理好的源文件分发到多台计算机上,预处理、编译后的目标文件的链接和其它除编译以外的工作仍然是在发起编译的主控电脑上完成,所以只要求发起编译的那台机器具备一套完整的编译环境就可以了。
distcc安装后,可以启动一下它的服务:

/usr/bin/distccd –daemon –allow 10.64.0.0/16

默认的3632端口允许来自同一个网络的distcc连接。
然后设置一下DISTCC_HOSTS环境变量,设置可以参与编译的机器列表。通常localhost也参与编译

export DISTCC_HOSTS="localhost 10.64.25.1 10.64.25.2 10.64.25.3"

然后与ccache类似把g++,gcc等常用的命令链接到/usr/bin/distcc上就可以了。
在make的时候,也必须用-j参数,一般是参数可以用所有参用编译的计算机CPU内核总数的两倍做为并行的任务数。
同样测试一下:
一台双核计算机,make -j4:23分16秒
两台双核计算机,make -j4:16分40秒
两台双核计算机,make -j8:15分49秒

在编译过程中

distccmon-text

来查看编译任务的分配情况。distcc也可以与ccache同时使用,通过设置一个环境变量就可以做到,非常方便。
总结一下:

tmpfs: 解决IO瓶颈,充分利用本机内存资源
make -j: 充分利用本机计算资源
distcc: 利用多台计算机资源
ccache:减少重复编译相同代码的时间

常用内核编译器
gcc

这篇关于#CentOS on Mac#1.Linux环境配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/615250

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

2. c#从不同cs的文件调用函数

1.文件目录如下: 2. Program.cs文件的主函数如下 using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using System.Windows.Forms;namespace datasAnalysis{internal static

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor