APUE 使用什么 Linux
APUE(Advanced Programming in the UNIX Environment)是一本经典的介绍UNIX系统编程的书籍,其内容涵盖了UNIX系统下的各种高级编程技术,包括文件I/O、进程控制、信号处理、线程以及进程间通信等,尽管书中的例子和讨论基于UNIX系统,但在Linux环境下同样适用,因为Linux是一个与UNIX兼容的操作系统,本文将详细介绍如何在Linux环境下使用APUE进行学习和实践。
一、环境准备
1. 虚拟机与Linux发行版
为了在Linux环境下学习APUE,首先需要设置一个Linux环境,推荐使用虚拟机软件(如VMware或VirtualBox)来安装一个Linux发行版,以下是一些常用的Linux发行版:
Ubuntu: 社区支持良好,文档丰富,适合新手。
CentOS: 企业级应用广泛,稳定性高。
Fedora: 最新的技术和软件包,适合希望体验最新特性的用户。
本文将以Ubuntu 20.04为例进行说明。
2. 安装必要的软件
在安装好Linux系统后,需要安装一些必要的软件和工具,包括gcc编译器、make工具、ssh服务以及其他开发工具,以下是安装步骤:
sudo apt-get update sudo apt-get install build-essential openssh-server -y
build-essential
包含了gcc、g++编译器和make工具,openssh-server
用于远程登录和文件传输。
二、下载与编译APUE源码
1. 下载APUE源码
从APUE的官方网站或相关资源网站上下载源码压缩包。
wget http://www.apuebook.com/src.3e.tar.gz tar -zxvf src.3e.tar.gz
2. 安装BSD库
APUE中的一些示例代码使用了BSD库的实现,为了使用这些功能,需要安装BSD库:
sudo apt-get install libbsd-dev -y
3. 编译APUE源码
进入解压后的源码目录,运行make命令进行编译:
cd apue.3e make
如果在编译过程中遇到错误,可以根据错误提示进行相应的修改,如果缺少某些头文件,可以手动添加。
4. 解决常见编译错误
在编译过程中,可能会遇到如下错误:
错误1:找不到sys/sysmacros.h
头文件。
解决方法:在apue.3e/include
目录下的apue.h
文件中添加以下代码:
#include <sys/sysmacros.h>
错误2:buf.c
文件中的某些代码段导致编译失败。
解决方法:打开apue.3e/stdio/buf.c
文件,删除89到93行的代码,并将95到121行替换为以下代码:
int is_unbuffered(FILE *fp) { return (fp->_flags & _IONBF); } int is_linebuffered(FILE *fp) { return (fp->_flags & _IOLBF); } int buffer_size(FILE *fp) { #ifdef _LP64 return (fp->_IO_buf_end fp->_IO_buf_base); #else return (BUFSIZ); /* just a guess */ #endif }
三、配置虚拟机网络与远程连接
1. 设置虚拟机网卡模式
为了让虚拟机能够与主机进行网络通信,需要将虚拟机网卡设置为桥接模式,具体步骤如下:
1、打开VMware,选择要配置的虚拟机,点击“编辑虚拟机设置”。
2、选择“网络适配器”,将“网络连接”设置为“桥接模式”。
3、选择与你主机相同网段的网卡。
2. 配置虚拟机IP地址
根据主机的网络信息,给虚拟机设置一个独立的本地IP地址,如果主机的IP地址是192.168.1.100,可以将虚拟机的IP地址设置为192.168.1.101。
编辑虚拟机中的/etc/netplan/01-netcfg.yaml
文件,添加以下内容:
network: version: 2 renderer: networkd ethernets: enp0s3: dhcp4: no addresses: [192.168.1.101/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 8.8.4.4]
然后运行以下命令应用配置:
sudo netplan apply
3. 安装SSH服务并启动
为了方便远程连接虚拟机,需要安装并启动SSH服务:
sudo apt-get install openssh-server -y sudo systemctl start sshd sudo systemctl enable sshd
验证SSH服务是否成功启动:
sudo systemctl status sshd
如果显示active (running)
,则表示SSH服务已成功启动。
4. 使用Tabby连接虚拟机
Tabby是一款免费的SSH客户端工具,可以从其官网下载并安装,安装完成后,打开Tabby,新建一个会话,输入虚拟机的IP地址和用户名,即可连接到虚拟机。
四、Windows环境下的远程开发
为了方便在Windows环境下进行开发,可以使用Windows的Clion集成开发环境(IDE),以下是通过Clion远程连接虚拟机并进行开发的步骤:
1. 安装Clion
从JetBrains官网下载并安装Clion,安装完成后,打开Clion,创建一个新的项目或导入现有项目。
2. 配置远程连接
在Clion中配置远程连接:
1、打开“File”菜单,选择“New” -> “Project from Existing Sources...”或“Import Project”。
2、选择“Remote Host”作为项目位置类型。
3、输入虚拟机的IP地址、用户名和密码。
4、测试连接是否成功,如果成功,Clion将自动下载并显示远程主机上的文件结构。
3. 同步文件与编译
在Clion中进行代码编写和调试,每次保存文件时,Clion会自动将文件上传到远程虚拟机,可以通过Clion的终端或虚拟机的本地终端执行编译命令:
make clean make
五、共享文件系统(Samba)
为了方便在Windows和虚拟机之间共享文件,可以在虚拟机上设置Samba文件共享,以下是具体步骤:
1. 安装Samba
在虚拟机上安装Samba:
sudo apt-get install samba -y
2. 配置共享目录
编辑Samba配置文件/etc/samba/smb.conf
,添加共享目录的配置,共享/home/user/shared
目录:
[shared] path = /home/user/shared available = yes valid users = user read only = no browsable = yes public = yes writable = yes
3. 创建Samba用户
为Samba创建一个用户并设置密码:
sudo smbpasswd -a user
4. 重启Samba服务
重启Samba服务以使配置生效:
sudo systemctl restart smbd smbdenied
5. 访问共享目录
在Windows资源管理器中输入\虚拟机IPshared
,即可访问共享目录,输入之前设置的Samba用户名和密码进行访问。
1. APUE在Linux环境下的优势
APUE虽然基于UNIX系统,但其内容和技术在Linux环境下同样适用,Linux作为一个开源且免费的UNIX兼容操作系统,提供了丰富的开发工具和社区支持,使得学习和实践APUE更加方便和经济,Linux的广泛应用也意味着更多的实战机会和更高的就业需求。
2. APUE学习路线建议
学习APUE需要一定的基础知识,包括C语言、操作系统原理、计算机网络等,建议按照以下路线进行学习:
基础知识:掌握C语言的基本语法和数据结构,了解操作系统的基本概念和原理。
文件I/O:学习UNIX文件系统的基本操作,包括文件的打开、读写、关闭等。
进程控制:理解进程的概念,学习进程的创建、终止、回收等操作。
信号处理:掌握信号的基本概念,学习信号的发送、捕获和处理。
线程与并发:了解线程的概念,学习线程的创建、同步和通信机制。
进程间通信(IPC):学习各种进程间通信方法,包括管道、消息队列、共享内存等。
网络编程:了解基本的网络模型和套接字编程,学习如何实现简单的网络通信。
3. 常见问题解答
问题1:如何在Ubuntu下安装APUE源码?
答:可以参考上述步骤,通过wget命令下载源码压缩包,解压后进入目录执行make命令进行编译,如果遇到错误,根据提示进行相应的修改。
问题2:如何解决编译过程中常见的错误?
答:常见的错误包括找不到头文件、宏定义缺失等,可以通过安装缺少的库、添加头文件路径或修改源码来解决,找不到sys/sysmacros.h
时,可以在apue.h
中添加相应的包含路径;遇到宏定义问题时,可以参考官方教程或社区提供的补丁。
各位小伙伴们,我刚刚为大家分享了有关“apue 使用什么linux”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/683239.html