C 指针原理揭秘:基于底层实现机制 (4):C 语言概述 1.3.2

阅读数:4 2019 年 12 月 11 日 20:19

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

(UNIX/Linux 开发环境)

内容简介
全书分为准备篇、基础篇、揭秘篇、实战篇。本书力求从底层实现机制进行解析,同时配合 C/C++ 编程技巧以及某些指针运用技巧,讲解如何提高程序效能,如何避免滥用指针。
准备篇中介绍 C 指针概述、UBUNTU 及开发环境配置、AT&T 汇编简介、编译原理基础;基础篇将对 AT&T 汇编以及 C 指针基础进行介绍;揭秘篇讲述高级 C 指针的实现机制以及 C++ 指针实现机制,同时讲解编程技巧和 C/C++ 指针高级应用;实战篇讲解解释语言指针、TCC 编译实践、垃圾回收等高级 C 指针应用话题。

目前,除了 Windows 系统,最流行的操作系统就是 UNIX 和 Linux 了,下面分别以这两个系统的经典代表—FreeBSD(世界上最稳定的类 UNIX 系统,基于 UNIX 的衍生系统 BSD)与 Ubuntu(最好用的 Linux 系统之一)为例,讲解 C 语言开发环境的部署。

  1. Ubuntu 开发环境

Ubuntu 基于 Debian 发布版和 GNOME 桌面环境创建,是开源且免费的 Linux 系统,它分为桌面版和服务器版,其目标在于为用户提供一个最新的同时又相当稳定的、主要由自由软件构建而成的操作系统。Ubuntu 系统既可安装在全新的电脑上,也可以与 Windows 操作系统并存,还可以安装在虚拟机中。下面以 VisualBox 虚拟机中运行的 Ubuntu 服务器版为例进行讲解。

1)在 VisualBox 虚拟机中新建 Ubuntu 的虚拟电脑。新建虚拟电脑,将内存设置为 512MB 或以上(如图 1-20 所示),创建 4GB 或 4GB 以上的虚拟硬盘(如图 1-21、图 1-22 和图 1-23 所示)。

2)下载 Ubuntu 服务器版。服务器版针对服务器应用对内核做了优化,同时,对虚拟机的资源要求更少,其运行速度相对于桌面版更快,因此应选择服务器版作为学习 C 语言以及 C 指针的平台。从官网链接( http://www.ubuntu.org.cn/download/server )下载 Ubuntu 的服务器版(12.04 版)映像文件(如图 1-24 所示)。

3)安装 Ubuntu。首先,单击“设备”→“分配光驱”,选择一个虚拟光盘,在打开的文件菜单中选择启动光盘的映像文件(从官网上下载的服务器 12.04 版 ISO 文件);然后,启动虚拟机,选择“English”语言作为系统语言(如图 1-25 所示)。

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-20 设置内存大小

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-21 创建虚拟硬盘

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-22 选择虚拟硬盘大小的指定方式

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-23 指定虚拟硬盘大小

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-24 下载 Ubuntu 的服务器版

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-25 选择系统语言

接着,选择“Install Ubuntu Server”(如图 1-26 所示)。

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-26 安装服务器版

选择 English 作为安装语言(如图 1-27 所示),选择“United States”区域(如图 1-28 所示),随后配置键盘选项(如图 1-29 和图 1-30、图 1-31 所示)。

按系统提示输入 hostname(主机名,可以输入任意英文名字)后,再输入安装初始化时需要自动创建的用户名和密码(如图 1-32、图 1-33 和图 1-34 所示,笔者输入的用户名为 myhaspl,系统登录需要输入用户名全称、用户名及用户密码)。输入的用户密码需要验证(如图 1-35 所示)。

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-27 选择安装语言

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-28 选择区域

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-29 键盘配置(一)

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-30 键盘配置(二)

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-31 键盘配置(三)

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-32 用户名全称

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-33 登录用户名

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-34 输入登录用户密码

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-35 验证刚才输入的用户密码

完成以上基本安装配置之后,安装程序提示是否加密主目录(如图 1-36 所示)。作为学习 C 语言的 Linux 平台无须加密,选择 NO,然后安装程序显示硬盘分区方案,连续按回车键接受磁盘的默认分区(如图 1-37 和图 1-38 所示)。

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-36 确定是否加密主目录

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-37 默认选择虚拟磁盘的所有空间

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-38 同意并实施分区方案

在接下来的几个选项中,按回车键接受默认选项,当提示选择默认安装软件时,勾选第一项(OpenSSH server)(如图 1-39 所示),以便随后使用 SSH 客户端进行登录。

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-39 默认安装软件

安装完毕后,重新启动,Ubuntu 提示登录界面,系统安装完毕。

4)配置虚拟机的网络设备,连接互联网,虚拟电脑设置中将网卡 1 设置为桥接方式(如图 1-40 所示)。

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-40 桥接方式

5)使用刚才安装时建立的用户名和密码登录后,通过 passwd 命令设置 root 密码(如图 1-41 所示),然后通过 ifconfig 命令查看虚拟机自动获取的 IP 地址(图 1-42 中 inet addr 处表明当前分配的 IP 为 192.168.1.239)。

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-41 root 密码

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-42 IP 地址

6)使用 putty 登录虚拟机,然后部署学习本书所需要的 C 语言开发环境。

首先,登录虚拟机(如图 1-43 和图 1-44 所示)。

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-43 设置虚拟机 IP 地址

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-44 虚拟机登录成功

然后,设置超级用户 root 密码,命令如下:

复制代码
$ sudo passwd root
[sudo] password for myhaspl:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

接下来,安装 GCC 编译器与 gdb 调试器,命令如下:

复制代码
$ sudo apt-get install gcc
$ sudo apt-get install make
$ sudo apt-get install gdb
  1. FreeBSD 开发环境

1)在虚拟机中安装 FreeBSD。首先,新建 FreeBSD 虚拟电脑(如图 1-45 所示)。

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-45 建立 FreeBSD 虚拟电脑

2)指定虚拟电脑的光驱为 FreeBSD 安装 ISO 文件后,启动虚拟电脑,出现如图 1-46 所示的起始界面,选择“Install”按钮。

3)输入主机名(如图 1-47 所示)。

4)选择安装组件,在这里选择全部安装,最后一项的 src 是源码,可以不选择(如图 1-48 所示)。

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-46 安装起始界面

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-47 主机名输入

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-48 选择安装组件

5)进行硬盘分区(如图 1-49、图 1-50 和图 1-51 所示)。

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-49 硬盘分区使用向导

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-50 使用所有硬盘

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-51 硬盘分区方案

6)安装程序开始进行系统安装(如图 1-52 所示)。

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-52 系统安装

7)安装完毕后,进行最后的配置。

先设置 root 账号的密码,接下来会提示你是否要增加一个普通用户,输入普通用户名及密码,以便在安装完成后作为 SSH 登录用户使用。输入完毕后,会出现如图 1-53 所示的提示界面,键入“yes”以确认刚才输入的信息,系统提示是否还要增加一个用户,输入“no”。

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-53 增加普通用户

然后,选择 exit,系统将提示是否需要手动配置(如图 1-54 所示),选择“no”,然后选择“Reboot”重启虚拟电脑(如图 1-55 所示)。

8)重新启动虚拟机后,安装 GCC。

系统重新启动后会出现如图 1-56 所示的界面。

使用 root 用户名登录,然后输入密码。成功登录后,会有提示符#出现(如图 1-57 所示)。

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-54 无须手动配置

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-55 选择 Reboot 重启虚拟机

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-56 系统启动界面

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-57 登录成功

安装 GCC,先在#提示符下输入“sysinstall”,依次选择 Configure(如图 1-58 所示)→ “Packages”(如图 1-59 所示)→“CD/DVD”(如图 1-60 所示)→“All”如(如图 1-61 所示)→“gcc-4.6.3”(如图 1-62 所示)后,点击“OK”后选择“Install”(如图 1-63 所示)。

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-58 选择 Configure

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-59 选择 Packages

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-60 选择 CD/DVD

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-61 选择 All

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-62 选择 gcc-4.6.3

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-63 安装 GCC

9)允许登录的用户加入 wheel 组。

当服务器需要进行一些日常系统管理员无法执行的高级维护时,往往就要用到 root 权限,而 wheel 组就是一个包含这些特殊权限的用户池。登录用户成为 wheel 组的成员后,可取得 root 权限进行一些特权的操作,只需要修改 /etc/group,即可将用户加入该组,修改的方法为:将安装过程中输入的普通登录用户添加到 wheel 组的末尾,将 wheel 行改成形如下面的内容:

复制代码
wheel:*:0:root,myhaspl

FreeBSD 下可使用 ee、vi、nano 三种编辑器之一修改 /etc/group 文件。

ee 编辑器界面如图 1-64 所示,在屏幕上方有快捷键提示,编辑完后,按 Esc + Enter 键离开 ee,编辑命令如下:

复制代码
#ee /etc/group

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-64 ee 编辑器

对 Linux 比较熟悉的读者,可安装 nano 编辑器,安装命令如图 1-65 所示,安装完毕后,可通过下面的命令修改 /etc/group 文件:

复制代码
#nano /etc/group

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-65 安装 nano

以 nano 编辑器为例,在 wheel 行的末尾加入用户名 myhaspl(如图 1-66 所示),按 Ctrl+x 键,nano 提示“文件已修改,是否保存”,选择“Y”,直接回车确认。

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-66 加入登录用户

10)通过 ifconfig 命令查看虚拟机分配的 IP 地址(如图 1-67 所示),在 inet 处可以看到 IP 地址为 192.168.1.10。

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

图 1-67 分配的 IP

11)打开前面介绍的 putty 客户端登录 FreeBSD,使用刚输入的 myhaspl 登录后输入 su 命令,更换用户身份为 root,命令如下所示:

复制代码
% su
Password:
root@myhaspl:/home/myhaspl #

12)安装 glib。安装过程如下:

复制代码
#cd /usr/ports/devel/glib20
root@dp:/usr/ports/devel/glib20 # make install clean
===> License LGPL20 accepted by the user
===> Found saved configuration for glib-2.36.3
===> Fetching all distfiles required by glib-2.36.3 for building
===> Extracting for glib-2.36.3
=> SHA256 Checksum OK for gnome2/glib-2.36.3.tar.xz.
===> Patching for glib-2.36.3
===> glib-2.36.3 depends on package: libtool>=2.4 - found
===> Applying FreeBSD patches for glib-2.36.3
..........................

13)喜欢 vim(类似于 vi 的文本编辑器,增加了很多新的特性,其被推崇为最好的类 vi 编辑器)编辑器的,可以安装 vim 编辑器,安装过程如下:

复制代码
myhaspl@myhaspl:~ % su
Password:
root@myhaspl:/home/myhaspl # find / -name vim
/usr/ports/editors/vim
root@myhaspl:/home/myhaspl # cd /usr/ports/editors/vim
root@myhaspl:/usr/ports/editors/vim # make install clean
=> vim-7.3.tar.bz2 doesn't seem to exist in /usr/ports/distfiles/vim.
=> Attempting to fetch http://artfiles.org/vim.org/unix/vim-7.3.tar.bz2
{1}

C指针原理揭秘:基于底层实现机制(4):C语言概述 1.3.2

购书地址 https://item.jd.com/12533413.html?dist=jd

评论

发布