Linux操作系统实验九C/C++编程

实验一

一、实训题目

使用 Emacs 编辑 C 语言源文件 

二、实训目的

(1)熟悉 Emacs 编辑器操作界面。

(2)初步掌握 Emacs 编辑器的使用。  

三、实训内容及步骤

(1)进入 Emacs 界面。

(2)进入编辑模式,编写一个简单的 C 语言源文件。

(3)尝试常用编辑命令的操作。 

实验二

一、实训题目

使用 GCC 编译器 

二、实训目的

(1)熟悉编译流程。

(2)初步掌握 GCC 编译器的使用。  

三、实训内容及步骤

(1)使用 gcc 命令编译 C 程序。

示例源码:

#include <stdio.h> 
int main(void) 
{ 
printf("Hello,World!\n"); 
return 0; 
} 

 

(2)使用 g++命令编译 C++程序。

现在终端上输入“sudo apt install g++”安装g++

示例源码:

#include <stdio.h> 
#include <iostream> 
int main() 
{ 
std::cout << "Hello world!" << std::endl; 
return 0; 
}

 

实验三

一、实训题目

制作源码安装包

二、实训准备

准备源代码。提供 3 个简单的源代码文件。

main.c 的源码如下:

#include <stdio.h> 
#include "common.h" 
int main() 
{ 
hello_method(); 
return 0; 
} 

 hello.c 的源码如下:

#include <stdio.h>
#include "common.h"
void hello_method()
{
printf("Hello,World!\n");
}

头文件 common.h 用于定义函数,源码如下:
 

void hello_method();

将所有源文件都放在同一个目录下,并将该目录作为项目工作目录

三、实训目的

(1)熟悉 Autotools 工具的使用。

(2)初步掌握源码安装包的制作。

四、实训内容及步骤

(1)切换到项目工作目录,执行命令 autoscan 命令扫描工作目录生成 configure.scan 文件。

(2)将文件 configure.scan 重命名为 configure.ac,然后再编辑修改这个配置文件。参考代码:

# 
-*- Autoconf -*- 
# Process this file with autoconf to produce a configure script. 
AC_PREREQ([2.69]) 
AC_INIT([hello], [1.0], [zxp@abc.com]) 
AC_CONFIG_SRCDIR([hello.c]) 
AC_CONFIG_HEADERS([config.h]) 
AM_INIT_AUTOMAKE 
# Checks for programs. 
AC_PROG_CC 
# Checks for libraries. 
# Checks for header files. 
# Checks for typedefs, structures, and compiler characteristics.# Checks for library functions. 
AC_CONFIG_FILES([Makefile]) 
AC_OUTPUT 

 

(3)在项目目录下执行 aclocal 命令,扫描 configure.ac 文件生成 aclocal.m4 文件。

 

(4)在项目目录下执行 autoconf 命令生成 configure 文件。

 

(5)在项目目录下执行 autoheader 命令生成 config.h.in 文件。

 

(6)在项目目录下创建一个 Makefile.am 文件,供 automake 工具根据 configure.in 中的参数

将 Makefile.am 转换成 Makefile.in 文件。Makefile.am 的内容如下:

AUTOMARK_OPTIONS = foreign 
bin_PROGRAMS = hello 
hello_SOURCES = main.c hello.c common.h 

(7)在项目目录下执行 automake 命令生成 Makefile.in 文件。通常要使用选项--add-missing

让 automake 自动添加一些必需的脚本文件。

 (8)在项目目录下执行./congigure 命令,基于 Makefile.in 生成最终的 Makefile 文件。

(9)在项目目录下执行 make 命令,基于 Makefile 文件编译源代码文件并生成可执行文件。

接着在该目录下运行所生成的可执行文件进行测试。

(10)在项目目录下执行 make install 命令将编译后的软件包安装到系统中。

 

(11)如果要对外发布,可以在项目目录下执行 make dist 命令将程序和相关的文档打包为一

个压缩文档

实验四

一、实训题目

使用集成开发环境 Anjuta 开发基于 GTK+的图形界面程序

二、实训目的

(1)熟悉集成开发环境 Anjuta。

(2)初步掌握基于 GTK+的图形界面程序的开发流程。

三、实训内容及步骤

(1)打开 Anjuta。

 

(2)启动项目创建向导,选择要建立的应用程序(项目)的类型。选择 C 语言编程,从项目列表中选择“GTK+(简单)”类型。

(3)设置项目的基本信息。  

 

(4)设置项目选项。 

 

(5)完成项目的创建,Anjuta 建立应用程序项目的目录结构,运行参数配置脚本并建立整个

应用项目。

 

(6)调用 Glade 编辑图形界面文件。

(7)编译并生成可执行文件。

 

(8)执行构建 Tarball 命令即可完成应用程序包的创建。

 

实验五

一、实训题目

使用 Qt Creator 开发基于 Qt 的图形界面程序

二、实训目的

(1)熟悉集成开发环境 Qt Creator。

(2)初步掌握基于 Qt 的图形界面程序开发的流程。

三、实训内容及步骤

(1)打开 Qt Creator,启动项目创建向导。

(2)选择项目模板。选择“Desktop”模板、“Application”类型和“Qt Widgets Application”子类型

(3)设置项目名称和项目文件存放位置。 

 (4)选择构建系统的套件。

(5)设置类信息。使用默认的主窗口类 MainWindow。

(6)显示项目管理信息。

(7)完成项目创建。  

(8)打开界面设计窗口。

(9)添加一个 Label 元件,将该标签的显示文本设置为“Hello World!”。

 (10)退出界面设计器并保存设计文件。

(11)编译并运行该程序。

(12)以 release 方式编译生成的可执行文件,然后发布程序。

 

实验总结

    通过本次实验:认识了一些C语言编程的可视化软件,以及在终端完成C语言和c++语言的编写和编译执行,在第三个实验中第七步时出现错误导致后续实验未完成,反复实验未成功。

  • 8
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这是一门linuxc++通讯架构实战课程,针对c/c++语言已经掌握的很熟并希望进一步深造以将来用c++linux下从事网络通讯领域/网络服务器的开发和架构工作。这门课程学习难度颇高但也有着极其优渥的薪水(最少30K月薪,最高可达60-80K月薪),这门课程,会先从nginx源码的分析和讲解开始,逐步开始书写属于自己的高性能服务器框架代码,完善个人代码库,这些,将会是您日后能取得高薪的重要筹码。本课程原计划带着大家逐行写代码,但因为代码实在过于复杂和精细,带着写代码可能会造成每节课至少要4~5小时的超长时间,所以老师会在课前先写好代码,主要的时间花费在逐行讲解这些代码上,这一点望同学们周知。如果你觉得非要老师领着写代码才行的话,老师会觉得你当前可能学习本门课程会比较吃力,请不要购买本课程,以免听不懂课程并给老师差评,差评也会非常影响老师课程的销售并造成其他同学的误解。 这门课程要求您具备下面的技能:(1)对c/c++语言掌握的非常熟练,语言本身已经不是继续学习的障碍,并不要求您一定熟悉网络或者linux;(2)对网络通讯架构领域有兴趣、勇于挑战这个高难度的开发领域并期望用大量的付出换取高薪;在这门课程中,实现了一个完整的项目,其中包括通讯框架和业务逻辑框架,浓缩总结起来包括如下几点:(1)项目本身是一个极完整的多线程高并发的服务器程序;(2)按照包头包体格式正确的接收客户端发送过来的数据包, 完美解决收包时的数据粘包问题;(3)根据收到的包的不同来执行不同的业务处理逻辑;(4)把业务处理产生的结果数据包正确返回给客户端;本项目用到的主要开发技术和特色包括:(1)epoll高并发通讯技术,用到的触发模式是epoll中的水平触发模式【LT】;(2)自己写了一套线程池来处理业务逻辑,调用适当的业务逻辑处理函数处理业务并返回给客户端处理结果;(3)线程之间的同步技术包括互斥量,信号量等等;(4)连接池中连接的延迟回收技术,这是整个项目中的精华技术,极大程度上消除诸多导致服务器程序工作不稳定的因素;(5)专门处理数据发送的一整套数据发送逻辑以及对应的发送线程;(6)其他次要技术,包括信号、日志打印、fork()子进程、守护进程等等;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小孙同学1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值