Ubuntu 升级 GCC 版本

GCC 源码网址 https://ftp.gnu.org/gnu/gcc/ 源码安装参考这里 添加相应的源 sudo add-apt-repository ppa:ubuntu-toolchain-r/test 如果提示 add-apt-repository: command not found,需要安装 sudo apt-get install software-properties-common 更新软件源 sudo apt-get update 安装指定版本的 gcc sudo apt-get install gcc-9 查看 gcc find / -name "gcc*" dpkg -l | grep gcc 指定默认使用的 gcc 版本 通过 update-alternatives 建立文件关联,如果安装了同一个软件的不同版本,可以使用 update-alternatives 命令设置默认使用哪个 首先要让系统知道我们安装了多个版本的 gcc # 命令最后的 20 和 50 是优先级,如果使用 auto 选择模式,系统将默认使用优先级高的 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 20 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 50 查看 gcc 版本...

January 8, 2024 · 1 min · Rick Cui

gdb 调试使用

一、生成带有调试信息的程序 gcc main.c -o app -g 二、启动调试 启动调试:gdb app 设置参数: set args set args 123 abc 456 ddd 查看代码: list 或 l 查看代码显示行数:show listsize 设置代码显示行数:set listsize 20 查看当前文件: l l 行号 l 函数名 查看非当前文件: l 文件名:行号 l 文件名:函数名 三、断点相关 设置断点: break 行号 b 行号 b 函数名 b 文件名:行号 b 文件名:函数名 查看断点:info break 或 i b 删除断点: del 断点Num d Num d Num1 Num2 d Num1-Num10 设置断点无效:dis Num 断点生效:ena Num 设置条件断点:b 行号 if i == 10 四、调试相关 启动运行: start - s run - r 退出 gdb 调试:quit - q 打印变量的值:p 变量名 打印变量的类型:ptype 变量名 向下单步调试: next - n step - s 跳出函数体:finish 从循环中跳出(循环体中不能有断点):until 设置变量的值:set var 变量名 = value 继续运行到下一个断点:continue - c 监视变量:display 变量名 查看所有的监视变量的信息:info(i) display 取消变量监视:undisplay Num

February 20, 2022 · 1 min · Rick Cui

Makefile 使用

一、make gcc 编译器 make 是 Linux 自带的构建器 二、文件命名 makefile Makefile 三、makefile 中的规则 例如:gcc a.c b.c c.c -o app 规则由三部分组成:目标、依赖、命令 app:a.c b.c c.c gcc a.c b.c c.c -o app makefile 中可以有多条规则 四、makefile 优化 版本一: app:main.c add.c sub.c gcc main.c add.c sub.c -I ./ -o app 存在的问题: 效率低,其中一个文件修改了,剩余的其它文件都要重新编译 版本二: app:main.o add.o sub.o gcc main.o add.o sub.o -I ./ -o app main....

February 19, 2022 · 1 min · Rick Cui

Linux 静态库与动态库

一、库是什么 库是二进制格式的源代码(二进制加密) 二、库的使用 头文件 制作的库文件 三、静态库的制作和使用 命名规则 libxxx.a 制作步骤 准备源代码文件 将源代码文件生成 .o 文件 gcc -c *.c 将 .o 文件打包(archive) ar rcs libxxx.a *.o 查看 lib 文件 nm libxxx.a 库的使用 gcc main.c -I./include -L ./lib -lmyCalc -o app -L: 库的路径 -l: 库的名称(去掉 lib 前缀和 .a 后缀) 四、动态库的制作和使用 命名规则 libxxx.so 制作步骤 准备源代码文件 将源代码文件生成 .o 文件 gcc -c -fpic *.c 或者 gcc -c -fPIC *....

February 17, 2022 · 1 min · Rick Cui

gcc 相关

一、gcc 工作流程 预处理 —— -E 宏替换 头文件展开 去掉注释 生成 .i 文件 编译 —— -S 生成 .s 文件 汇编文件 汇编 —— -c 生成 .o 文件 二进制文件 链接 二、gcc 常用参数 -v / --version -I : 编译时指定头文件路径 -c : 生成二进制文件 .o -o : 指定生成的文件名 -g : gdb 调试,生成带有调试信息的二进制文件(Debug模式) -D : 编译时指定一个宏 -Wall : 显示警告信息 -On : 优化代码,n 是优化级别(1,2,3)

February 16, 2022 · 1 min · Rick Cui