Linux基础学习

2023-11-19

安装gcc

1、apt-get命令是debain Linux发新版的APT软件包管理工具。

dabianubuntudeepin等Linux系统通过以下命令:
安装gcc:Shell输入sudo apt-get install gcc命令,然后回车确定就可以了。
安装g++:Shell输入sudo apt-get install g++命令,回车确定。
用于我这里已经安装过,所以显示gcc 已经是最新版。
在这里插入图片描述
2、yum命令是在FedoraRedHat以及SUSE中基于rpm的软件包管理器。
Shell输入sudo yum install gcc命令,sudo yum install gcc-g++命令。

使用gcc

0、使用vim编写程序,命令vim main.c编写如下代码:

#include <stdio.h>
#include <stdlib.h>
int main()
{
	printf("hello world!\n");
	exit(0);
}

在这里插入图片描述
1、预编译:命令gcc -E mian.c -o main.i预编译,生成main.i文件。其中-E表示预编译,main.c是源文件,main.i表示生成的文件(-o 表示目标Object)
在这里插入图片描述
2、编译:命令gcc -S main.i -o main.s编译,生成main.s文件
在这里插入图片描述
3、汇编:命令gcc -c main.s -o main.o汇编,生成main.o文件
在这里插入图片描述
4、连接:命令gcc -o mian.o -o main连接,生成可执行文件
在这里插入图片描述
5、执行:命令./main执行。./表示当前目录。
在这里插入图片描述
6、直接编译
1、可以用命令gcc -c main.c -o main.o命令一步编译至汇编阶段。
在这里插入图片描述
2、可以用命令gcc -o main main.c命令将c程序一步编译完成。此命令可用于简化c程序编译步骤。
在这里插入图片描述
另外,有些程序依赖动态库在编译时在后边加上-l库名
比如2.c程序中用到了#include <math.h>编译时应该加上动态共享库名在这里插入图片描述

gdb调试

首先安装gdb,apt-get install gdb
1、编译程序gcc -o main main.c -g,加上-g生成调试信息
2、gdb main开始调试
在这里插入图片描述
命令:
l 显示代码    p 打印
b 加断点     q 退出
r 运行      info break
n 单步调试    info threads
s 进入函数    threads id
finish 退出函数  set follow-fork-mode child
bt 显示函数调用栈关系

此外,还有以下几种调试
  1. core文件调试 ulimit -c size 设置生成文件大小(程序崩溃时生成)
  2. strace 跟踪打印系统调用 -p pid
  3. ltrace 跟踪库函数
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux基础学习 的相关文章

  • 服务器系统怎么重新启动,服务器win7系统不能重新启动

    1 电脑关不机 有很多因素 有可能是中毒了 有可能是系统问题 有可能是硬件问题 也有可能是设置问题 所以我们要一个个的排除 2 第一 中毒可能性 如果电脑可能中毒导致关不了机 就需要下载杀毒软件 然后进行木马杳然 点击全盘杀毒 一个也不能放
  • iOS开发助手、ipa便捷上传工具!

    ipa上传助手Appuploader是一个iOS APP上架辅助助手 帮助开发者可以快速的申请iOS证书打包ipa文件上传到App Store审核 非常方便的iOS上架助手 提升上架效率 ipa上传助手Appuploader官网http w
  • 【C++】类:构造函数、默认构造函数模板

    目录 模板一 两个类名构造函数 一个传参 一个不传参 模板二 成员初始化列表 推荐 性能高 构造函数 默认构造函数的作用 构造函数 传一些参数进来 用于给类的成员变量赋值 默认构造函数 程序员给类的成员变量设定一个默认值 也是用于给类的成员
  • 逻辑回归(二):Loss易导

    目录 回顾 梯度下降 对Loss函数求偏导 更新公式 多分类问题 总结 回顾 书接上回 讲到了逻辑回归的Loss函数的一般形式 大体如下 L 1
  • AWVS使用教程

    AWVS可以用来 Site Crawler 爬取URL Target Finder IP端口扫描 Subdomain Scanner 用DNS进行域名解析 找域名下的子域及其主机名 Blind SQL Injector 在相应参数位置按 添
  • sql的几种约束,非空,不重

    NOT NULL 用于控制字段的内容一定不能为空 NULL UNIQUE 控件字段内容不能重复 一个表允许有多个 Unique 约束 PRIMARY KEY 也是用于控件字段内容不能重复 但它在一个表只允许出现一个 FOREIGN KEY
  • 位移运算使用技巧

    位移运算使用技巧 左位移 lt lt 右位移 gt gt 左位移 lt lt 将二进制数向左位移操作 高位溢出则丢弃 地位补0 int a 11 int b a lt lt 1 b 22 位移前 0000 1011 位移后 0001 011
  • 达芬奇传

    列奥纳多 迪 皮耶罗 达 芬奇 出生于1452年 1519年逝世 享年67岁 画家 发明家 科学家 生物学家 工程师 达 芬奇的意思是 来自芬奇镇 他的名字叫做列奥纳多 达 芬奇的父亲叫瑟 皮耶罗 达 芬奇 是佛罗伦萨的法律公证员 因此十分
  • git:批处理启动Git-Bash窗口并显示特定目录

    参考 使用批处理脚本 在特定目录中启动Git Bash窗口
  • 【数据结构】复杂度

    博客主页 小王又困了 系列专栏 数据结构 人之为学 不日近则日退 感谢大家点赞 收藏 评论 目录 一 什么是数据结构 二 什么是算法 三 算法的效率 四 时间复杂度 4 1大O渐进表示法 4 2常见时间复杂度计算举例 4 3例题 消失的数字
  • StarkNet 批量交互 mint 铸造 js 脚本

    代码使用 starknet 模块与 StarkNet 网络进行交互 通过读取私钥文件和执行铸造操作来创建 NFT 非同质化代币 它通过批量运行的方式处理多个私钥和地址对 并将结果输出到控制台和日志文件中 代码的详细步骤 导入模块和变量 co
  • QT5串口编程----线程循环发送不成功问题

    今天想写一个QT5的串口编程 能够循环发送数据 想具体到us级别 不需要设置ms发送 所以想用一个线程一直发送 关键问题是碰到在线程循环发送竟然发不出去 见鬼了 最后找到问题是要在每次发送后要判断waitForBytesWritten是否发
  • jmeter接口测试,CSV数据文件引用,参数化

    1 新增一个Excel文件 填写会用到的变量数据 2 将文件保存为CSV格式文件 3 在jmeter里添加 CSV数据文件配置 导入登录的用户和密码数据等信息 在jmeter里引用Excel转化的CSV格式数据文件 说明 带入的数据依次是
  • RTKLIB源码解析(一)、单点定位(pntpos.c)

    目录 pntpos satposs estpos raim fde estvel ephclk satpos satsys seleph eph2clk ephpos eph2pos rescode lsq valsol matmul do
  • 计算机视觉入门之构建一个扫描仪

    源代码 import the necessary packages from transform import four point transform from skimage filters import threshold local
  • tengine [emerg] invalid IPv6 address in resolver “[fe80::1%enp2s0]“ in .../nginx.conf:137

    错误 nginx emerg invalid IPv6 address in resolver fe80 1 enp2s0 in usr local nginx conf nginx conf 137 解决 1 vim etc resolv

随机推荐

  • kafka(三)重平衡

    历史文章 kafka 一 kafka的基础与常用配置 文章目录 一 kafka消费者组 二 重平衡 Rebalance 2 1 重平衡触发条件 2 2 重平衡策略 2 2 1 Range 平均分配 2 2 2 RoundRobin 轮询分配
  • 独家

    作者 Damir Yalalov 翻译 陈超 校对 赵茹萱 本文约1100字 建议阅读5分钟 本文介绍了ChatGPT如何解决简单的机器学习任务并给出了鸢尾花分类和城市预测两个案例 一句话概括 ChatGPT可以帮助你完成简单的机器学习任务
  • ldconfig: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link

    libcuda so
  • 【宠粉福利】这次我们准备了 iPhone 12、AirPods Pro、罗技鼠标等大礼等你来领!...

    喜迎开学季 C 站开豪礼 最高可开 iphone 12 盲盒开出的不只是一份礼物 更是对于一切美好的期待 拆开一个盲盒 就像开始一场未知的爱丽丝梦游仙境 为 两点一线 朝九晚九 的生活 埋下一刻期待的种子 去收获一份未知的惊喜 这次 价格再
  • CentOS 7 关闭网络限制

    1 安装CentOS 7 3操作系统mini版本即可 2 设置关闭Selinux 编辑 etc selinux config vi etc selinux config SELINUX disabled 重启机器 查看selinux状态 s
  • C++中的namespace

    namespace中文意思是命名空间或者叫名字空间 传统的C 只有一个全局的namespace 但是由于现在的程序的规模越来越大 程序的分工越来越细 全局作用域变得越来越拥挤 每个人都可能使用相同的名字来实现不同的库 于是程序员在合并程序的
  • 手撕计算机网络——应用层(四):P2P

    前言 进入应用层学习也有了一段时间了 接下来的这篇文章中小荔枝会将应用层P2P结构体系于我们客户 端系统体系在分发文件中的机理进行整理 希望今天能结束应用层学习哈哈哈 运输层我来啦 目录 前言 一 P2P的自拓展性 二 BitTorrent
  • 【高德地图API】从零开始学高德JS API(八)——地址解析与逆地址解析

    摘要 无论是百度LBS开放平台 还是高德LBS开放平台 其调用量最高的接口 必然是定位 其次就是地址解析了 又称为地理编码 地址解析 就是将地址转换为经纬度 而逆地址解析 就是将经纬度转换为地址 经纬度一般是由专业测绘机构用GPS采集 然后
  • Shell——脚本执行命令和控制语句

    前言 在正常情况下 shell按顺序执行每一条语句 直至碰到文件尾 if选择结构示例 if后面紧跟判断条件 then后面是执行语句 fi是结束标志 多重if结构示例 case多选结构 通常用于在一系列模式中匹配某个变量的值 命令 只在cas
  • CH7-查找

    文章目录 1 查找的基本概念 2 线性表的查找 2 1 顺序查找 线性查找 算法2 1 0 类型定义 算法2 1 1 顺序查找 算法2 1 2 改进后的顺序查找 性能分析 2 2 折半查找 二分或对分查找 算法2 2 1 非递归算法 算法2
  • 基于容器PaaS云技术平台方案

    本文以容器技术建设 PaaS 平台即服务 云平台的解决方案为例 分析其如何实现系统资源的集中管理 动态分配 监控 共享和调度 如何实现应用的统一部署和业务连续性保障 实现多数据中心的高可用 推动系统架构及流程的调整 应对云计算时代所带来的变
  • 分析研究<<一战到底>>节目规则演变

    分析研究 lt lt 一战到底 gt gt 节目规则演变 一 研究范围 江苏卫视2012年3月2日推出益智答题类节目 研究时间截止 2014年1月4日星期六 二 规则演变 1 初始规则 2012年3月2日规则 1 每期参加节目的有11人 分
  • 01-ZooKeeper快速入门

    1 Zookeeper概念 Zookeeper是Apache Hadoop项目下的一个子项目 是一个树形目录服务 zookeeper翻译过来就是 动物园管理员 它是用来管理Hadoop 大象 Hive 蜜蜂 Pig 小猪 的管理员 简称ZK
  • C语言程序设计 现代方法(第2版)电子书pdf下载

    C语言程序设计 现代方法 第2版 下载链接 https pan baidu com s 1XIKYGAxGhRTscgibAj3kgQ 提取码获取方式 关注下面微信公众号 回复关键字 1129
  • 关于猜数字游戏以及关机指令

    这几天学习到了一些没有接触过的东西 因此在这里记录下 首先是猜数字游戏 这个小程序特别简单 只要知道相关的几个关键函数就能明白 它的主要函数有rand 返回随机数 以及srand 用来设置随机数的起点 以及time 代码如下 include
  • 【QTUM量子链中国区】零撸180元攻略

    QTUM量子链中国区 于2020年1月7日正式上线 实名认证 无需上传 通过后赠送体验矿机一台 周期30天 总产量10QTUM 价值130元 进入官方QQ群可以目测到 这个新出的项目非常火爆 问题是 QTUM量子链中国区和著名的QTUM量子
  • ABAP 参照TR创建副本TR并释放

    简介 一般项目中为了后期传输的统一性 都会采用传输副本请求的方式来避免出现一个需求有过多的工作台TR的情况 但是常规的创建副本请求的方式不是很便捷 因此本文介绍一种参照已有TR创建副本TR的样例 效果 代码 Report YSTMS
  • Ljavax/validation/ParameterNameProvider

    利用宝塔部署项目war包出现 Ljavax validation ParameterNameProvider 的错误 初始化org springframework validation beanvalidation OptionalVali
  • day08-Linux自有服务&软件包管理

    自有服务 即不需要用户独立去安装的软件的服务 而是当系统安装好之后就可以直接使用的服务 内置 学习目标 1 了解systemctl命令用途 2 掌握使用systemctl开启 关闭 重启服务 3 了解常见自有服务ntpd firewalld
  • Linux基础学习

    安装gcc 1 apt get命令是debain Linux发新版的APT软件包管理工具 dabian ubuntu deepin等Linux系统通过以下命令 安装gcc Shell输入sudo apt get install gcc命令