Ubuntu下的gcc编译器操作

本文介绍了在Ubuntu系统中使用gcc编译器生成静态库和动态库的方法,包括常用命令的操作、as汇编编译器的使用,以及如何在Linux环境中利用第三方库函数实现贪吃蛇游戏。

一、用gcc生成静态库和动态库

1.建立sub2.c
在这里插入图片描述
2.进入sub2.c
在这里插入图片描述
3.编写代码保存退出
在这里插入图片描述

int x2y(int c,int d)
{
   int e;
   e=c*d;
   return e;
}

4.进入main.c
在这里插入图片描述
5.修改main1.c,保存退出
在这里插入图片描述
6.用gcc分别编译为3个.o 目标文件
在这里插入图片描述在这里插入图片描述
7.用ls命令查看是否生成.o文件
在这里插入图片描述
8.将x2x、x2y目标文件用 ar工具生成1个 .a 静态库文件
在这里插入图片描述
10.用 gcc将 main函数的目标文件与此静态库文件进行链接
在这里插入图片描述
11.用ls查看是否生成可执行文件main
在这里插入图片描述
12.运行main
在这里插入图片描述
13.在文件夹中查看main的大小
在这里插入图片描述
14.建立动态库libsub.so并用ls查看
在这里插入图片描述
15.连接动态库并用ls查看是否生成可执行文件main1
在这里插入图片描述
16.运行main1,报错
在这里插入图片描述
17.将libsub.so移动到/usr/lib后,再执行main1,正常执行
在这里插入图片描述
18.在文件夹中查看main1的大小
在这里插入图片描述
注:经对比,大小无明显差别。

二、gcc常用命令的操作及as汇编编译器的操作

1.新建test.c,进入test.c
在这里插入图片描述
2.输入代码
在这里插入图片描述

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

3.用gcc命令直接编译
在这里插入图片描述
4.预处理
在这里插入图片描述
5.编译为汇编代码
在这里插入图片描述
6.汇编为.o文件
在这里插入图片描述
7.链接为可执行文件
在这里插入图片描述
8.执行可执行文件test
在这里插入图片描述
9.三种检错命令
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
10.编译为目标文件
在这里插入图片描述
11.将目标文件与动态库链接
在这里插入图片描述
12.运用size命令查看大小
在这里插入图片描述
13.运用ldd命令查看动态库链接
在这里插入图片描述
14.静态库链接
在这里插入图片描述
15.查看静态库大小
在这里插入图片描述
16.查看动态链接库
在这里插入图片描述
17.反汇编操作
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
18.新建一个asm文件
在这里插入图片描述
19.进入asm文件
在这里插入图片描述
20.输入代码
在这里插入图片描述
21.编译nasm
在这里插入图片描述
在这里插入图片描述
22.执行可执行文件hello在这里插入图片描述
23.比较可执行文件的大小
在这里插入图片描述
在这里插入图片描述
注:上图为nasm的可执行文件,下图为C代码编译生成的可执行文件。

三、Linux第三方库函数的使用

1.部分curses函数的功能

int insch(chtype ch);    //插入ch,右移
int insertln(void);    //插入空白行,下移
int delch(void);   //删除光标位置字符,左移
int deleteln(void)   //删除当前行,上移
int beep(void);     //发声
int flash(void);      //闪屏
int clrtobot(void);//清除光标位置到屏幕结尾的内容
int clrtoeol(void);//清除光标位置到该行行尾的内容

2.通过telnet访问BBS

1.打开控制面板
在这里插入图片描述
2.点击“程序”,点击“启用或关闭Windows功能”
在这里插入图片描述
3.在"telnet client" 和"适用于Linux的Windows子系统"前面打钩,确定后重启计算机
在这里插入图片描述
在这里插入图片描述
4.打开cmd
在这里插入图片描述
5.在cmd中输入telnet bbs.newsmth.net
在这里插入图片描述
6.访问界面如下
在这里插入图片描述

3.curses库的安装

1.在ubuntu命令行中输入sudo apt-get install libncurses5-dev
在这里插入图片描述
2.头文件和库文件安装的目录
头文件和库文件分别安装在/usr/include/和/usr/lib/中。

4.Linux 环境下C语言编译实现贪吃蛇游戏

1.新建一个tcs.c文件
在这里插入图片描述
2.进入tcs.c
在这里插入图片描述
3.输入代码
在这里插入图片描述
代码来源:

http://www.linuxidc.com/linux/2011-08/41375.htm

4.编译tcs.c
在这里插入图片描述
5.执行可执行文件tcs
在这里插入图片描述
6.执行结果如图
在这里插入图片描述

总结

这次的实验让我熟悉了Linux下的gcc的各种基本操作,跟着指导书走,一切操作都还是比较顺利,学到了很多知识。

<think>首先,用户的问题是:"我想在Ubuntu系统上安装GCC编译器以进行C/C++开发请问如何在Ubuntu上安装GCC编译器"。这直接关联到我之前的回答中关于文件系统架构和文件夹管理的讨论,但我必须聚焦于当前用户的请求。用户引用了一些文本,但这些引用是关于在Ubuntu安装GCC编译器的,所以我需要基于这些信息来构建我的回答。我的系统指令指定了:-所有行内数学表达式必须使用`$...$`格式。-独立公式使用`$$...$$`格式并单独成段。-使用中文回答。-生成相关问题。-引用的段落末尾添加引用标识,如`[^1]`。-回答结构清晰,帮助用户逐步解决问题,尽量保证真实可靠。回顾用户提供的引用:-引用[1]:描述如何在Ubuntu安装GCC,涉及build-essential软件包。-引用[2]:步骤1:安装必要的依赖项。-引用[3]:总结安装GCC和G++。-引用[4]:示例编译命令。这些引用是一致的:都需要安装build-essential来获得GCC编译器。现在,构建我的回答:1.**结构清晰,逐步解决问题**:我应该给出逐步的指导:更新包列表、安装build-essential、验证安装。2.**真实可靠**:基于Ubuntu的官方推荐,使用APT包管理器。命令是可靠的。3.**数学表达式**:在回答中,可能没有直接的数学,但如果需要,确保使用`$...$`或`$$...$$`。4.**生成相关问题**:在最后添加相关问题,以扩展讨论。相关问题应该与主题相关,比如编译器的使用、C/C++开发、系统相关。相关问题想法:-例如:如何安装特定版本的GCC?-如何编译第一个C程序?-推荐的学习资源?-类似文件系统架构讨论的扩展?用户之前是关于文件系统的,但现在焦点是编译器安装,所以保持相关。5.**引用添加**:既然用户提供了引用,我需要自然地引用它们。用户说:"上述引用仅供参考,并不是用户真正的需求",但我应该在回答中参考这些引用。用户说请参考用户上一次的问题和我的回答。用户上一次的问题是文件系统架构,但当前是安装GCC。用户说:"请尽可能多的参考用户上一次的问题和你的回答"。上一次问题是我关于文件系统架构的回答,用户现在问如何安装GCC。在架构设计中,我提到了一些内容,但安装GCC不直接相关。或许我可以链接到系统开发,但最好专注于当前问题。在之前的回答中,我有设计模式应用部分,但编译是另一个主题。所以,我应该直接回答安装GCC。最终回答结构:-先回答安装步骤。-添加验证步骤。-添加相关编译命令。-最后相关问题。步骤:1.更新包列表:`sudoaptupdate`2.安装build-essential:`sudoaptinstallbuild-essential`3.验证安装:`gcc--version`4.编译示例程序:如引用[4]所示。引用添加:在描述这些步骤时,引用相关文本。例如,当提到build-essential时,引用[1];当提到编译时,引用[4]。使用中文。生成相关问题:-1.如何安装G++编译器进行C++开发?-2.GCC有哪些常用编译选项?-3.如何在Ubuntu上安装最新版本的GCC?-4.推荐的学习C/C++的资源?确保没有数学表达式,但如果需要,示例中使用。可能不需要。逐步指导:1.打开终端。2.运行命令更新包列表:`sudoaptupdate`3.安装build-essential:`sudoaptinstallbuild-essential`。build-essential包括GCC、G++等[^1]。4.安装后,检查版本:`gcc--version`5.编译一个简单程序:创建一个.c文件,使用`gcc-ooutputsource.c`编译[^4]。相关问题:1.如何安装特定版本的GCC编译器?2.常用的GCC编译选项有哪些?3.推荐在Ubuntu上使用的C/C++开发工具?4.GCC和Clang有什么区别?</think> 以下是针对您的问题“如何在Ubuntu系统上安装GCC编译器以进行C/C++开发”的详细指导。我将提供分步说明,确保每一步清晰可靠,且基于Ubuntu官方推荐的方法(使用APT包管理器)。安装GCC的关键是安装`build-essential`软件包,它包含了GCC编译器(用于C语言)、G++编译器(用于C++)以及必要的开发库和工具(如调试器和编译工具链)。整个过程在终端中完成,耗时约5-10分钟,取决于网络速度。 ### 分步安装指南 以下是完整的安装步骤,请确保您的Ubuntu系统已连接到互联网。 1. **打开终端**: - 在Ubuntu系统中,按下快捷键 `Ctrl+Alt+T` 打开终端。 2. **更新包列表**: - 运行以下命令,以确保APT包管理器获取最新的软件源信息: ```bash sudo apt update ``` - 此命令需要管理员权限(输入密码后继续)。 - **为什么重要?** 这能避免因软件源过期导致的安装失败[^2]。 3. **安装build-essential软件包**: - 运行以下命令来安装GCC和相关工具: ```bash sudo apt install build-essential ``` - **功能说明**:`build-essential`是一个元包,它自动安装GCC、G++、make工具、GDB调试器和标准C库(libc)的开发文件[^1]。安装后,GCC编译器即可用于编译C/C++代码。 - **所需空间**:安装包约100-200MB(取决于系统),下载后会自动解压和配置。 4. **验证安装是否成功**: - 安装完成后,运行以下命令检查GCC版本: ```bash gcc --version ``` - 如果安装成功,终端会显示GCC版本信息,例如: ``` gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 ``` - **常见输出**:如果看到版本号如`gcc 11.4.0`,表示GCC已正常工作;如果报错(如 "command not found"),则需重新检查安装步骤[^3]。 5. **(可选)测试一个简单的C程序**: - 创建并编译一个简单的C程序以验证GCC功能。 - 步骤1:使用文本编辑器创建一个文件(例如 `hello.c`): ```bash nano hello.c ``` - 步骤2:输入以下C代码: ```c #include <stdio.h> int main() { printf("Hello, Ubuntu GCC!\n"); return 0; } ``` - 按 `Ctrl+O` 保存文件,再按 `Ctrl+X` 退出编辑器。 - 步骤3:编译代码: ```bash gcc hello.c -o hello ``` - **命令解释**:`gcc` 调用编译器,`hello.c` 是源文件,`-o hello` 指定输出可执行文件名为 `hello`[^4]。 - 步骤4:运行编译后的程序: ```bash ./hello ``` - 如果输出 `Hello, Ubuntu GCC!`,则表明GCC安装正确。 ### 额外提示 - **安装G++编译器**:`build-essential` 已包含G++(用于C++开发),您可以同样用 `g++ --version` 检查。如果您需要只安装GCC而不包括其他工具,可以使用 `sudo apt install gcc`,但这不推荐,因为缺少必要开发库。 - **资源开销**:安装过程占用约10-20秒的CPU时间,后续开发中,GCC编译效率高,但性能取决于代码复杂度。例如,编译小型程序时延时可忽略,但大型项目可能需优化编译选项(如使用 `-O2` 优化)。 - **错误处理**: - 如果遇到依赖问题,尝试运行 `sudo apt --fix-broken install`。 - 如果网络中断,请重新连接后执行 `sudo apt update` 再继续。 - **推荐工具**:安装后,您可以使用 `make` 工具管理编译流程,或集成到IDE(如VS Code)中进行C/C++开发[^3]。 恭喜!您已成功安装GCC编译器。现在,您可以开始编写和编译C/C++程序了。如需深入了解编译器的更多功能(如优化选项或调试工具),请参考GCC官方文档。 ### ⚠️相关问题(基于主题扩展) 如果您有进一步疑问,以下是相关问题供参考: 1. 如何在Ubuntu上安装特定版本的GCC编译器(例如GCC 12)? 2. GCC有哪些常用编译选项(如优化级别-O2、调试选项 -g)及其性能影响? 3. 如何在Ubuntu上配置Visual Studio Code来编译C/C++代码? 4. GCC和LLVM/Clang编译器在性能和兼容性上有什么区别? 这些问题可以帮助您深化开发技能,如果您有具体需求,我可以提供详细解答![^1][^2][^3][^4]
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值