GCC工具:
GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言编译器。GNU编译器套件包括C、C++、 Objective-C、 Fortran、Java、Ada和Go语言前端,也包括了这些语言的库(如libstdc++,libgcj等。) [1]
GCC的初衷是为GNU操作系统专门编写的一款编译器;
通俗的理解:就是将人力的编程语言转换成机器可以识别的语言。
Ubuntu安装GCC工具
1.更新软件包列表(确保使用最新源):
sudo apt update
2.安装 GCC:
sudo apt install gcc
3.安装成功后查看GCC版本
gcc -v

看到以上信息说明GCC已经在ubuntu中安装成功;
方法 2:安装完整开发工具包(推荐)
如果需要同时安装 g++、make 和其他开发工具,可以安装 build-essential:
sudo apt update sudo apt install build-essential
安装完成后,检查 gcc 和 g++ 版本:
gcc --version g++ --version
安装特定版本的 GCC
如果需要特定版本的 GCC(例如 GCC 11):
-
搜索可用版本:
apt list gcc-* -
安装指定版本(例如
gcc-11):sudo apt install gcc-11 -
设置默认版本(可选):
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 11
通过SSH登录Linux常见软件:
Finalshell
官方地址:FinalShell
软件下载地址:FinalShell SSH工具,服务器管理,远程桌面加速软件,支持Windows,macOS,Linux,版本4.5.12,更新日期2024.10.30 - FinalShell官网
MobaXterm
官方地址:MobaXterm free Xserver and tabbed SSH client for Windows
软件下载地址:MobaXterm Xserver with SSH, telnet, RDP, VNC and X11 - Download
Visual Studio Code
官方地址:Visual Studio Code - Code Editing. Redefined
可以使用VS Code中的remote SSH组件访问安装在虚拟机中的Ubuntu;
gcc 相关命令
gcc对于文件后缀命名是很敏感的;(.c - C语言,.cpp -C++语言)
gcc -o
示例:
gcc -o build test.c
会生成一个 build文件
./build 则会执行编译后的程序;
gcc -v -o build test.c
执行上面的命令可以看到gcc工具的编译过程;使用gcc相关命令实现gcc -o build test.c能力;
step1:将test.c文件编译生成一个汇编文件
gcc -S -o a.s test.c
生成一个a.s的文件(.s文件是汇编文件)
cat a.s(查看汇编文件内容)
.file "test.c"
.text
.section .rodata
.LC0:
.string "hello word"
.text
.globl main
.type main, @function
main:
.LFB0:
.cfi_startproc
endbr64
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
leaq .LC0(%rip), %rdi
call puts@PLT
movl $0, %eax
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE0:
.size main, .-main
.ident "GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
.section .note.GNU-stack,"",@progbits
.section .note.gnu.property,"a"
.align 8
.long 1f - 0f
.long 4f - 1f
.long 5
0:
.string "GNU"
1:
.align 8
.long 0xc0000002
.long 3f - 2f
2:
.long 0x3
3:
.align 8
4:
step2:将.s文件生成.o文件
gcc -c -o a.o a.s
a.s是上一步生成的文件;在Linux终端输入ls 就可以看到
a.o a.s build test.c
.o文件是二进制文件;
程序编译基本包含一下几部分:预编译、编译、汇编、链接;
预编译处理的是以#开头的相关命令;
gcc -D:通过GCC编译增加的宏定义,在程序代码中搜索不到;
gcc -Dabc -o build test.c
C语言补充说明:
#include(包含头文件)
#define OUTPUT_STRING(x) #x //宏定义的中的#x代表输出的是字符串;
#define MOUNTH(x) inputMounth##x //输出相同“inputMounth”变量取值-可以用于变量和函数;
示例代码如下:
#define OUTPUT_STRING(x) #x
#define MOUNTH(x) inputMounth##x
int main()
{
int inputMounth1 = 31;
int inputMounth2 = 29;
#ifdef abc
printf("run the %s,%s,%d\n",__FUNCTION__,__FILE__,__LINE__);
#endif
printf("the define %s\n",OUTPUT_STRING(123456));
printf("the January have %d days\n",MOUNTH(1));
printf("the February have %d days\n",MOUNTH(2));
return 0;
}
输出结果:
the define 123456
the January have 31 days
the February have 29 days
宏定义
#define(宏定义/宏函数 - 宏名、宏体)
条件预处理
#if、#ifdef、#elif、#else、#endif、
预定义宏
_FUNCTION_:函数名
_LINE_:行号
_FILE_:文件
printf("run the %s,%s,%d\n",__FUNCTION__,__FILE__,__LINE__); 可以使用这个功能在调试过程中定位问题的原因;
对于#include <stdio> 和#include "ota.h"
<>一般表示的系统的标准库的头文件或者系统库头文件;
""自有的头文件,当前文件夹下的头文件;
&spm=1001.2101.3001.5002&articleId=146456991&d=1&t=3&u=20a089576f7c4c6d830dc7f6a69f8ee8)
950

被折叠的 条评论
为什么被折叠?



