linux c 语言小结
gdb 使用
(gdb是调试linux c语言代码的,所以要调试linux c语言,先要 gcc -g 文件名,才能开始调试)

gdb 命令
首先在命令行中输入 gdb
调试的基本代码

list 展示
s 进入函数内部
按回车执行刚才的命令
start 开始调试
list 查看10行
P 变量 : 查看这个变量
p *p 找出p指向的值
bt 查看函数堆栈
f 1 跳到1这个堆栈
quit 退出
1
2
3
4
5
6
7
8
9
10
vim扩展使用
命令模式 w代表保存
shift + a 行尾
shift + i 行首
shift + o 上一行插入
o 下一行插入
:sp max.c 创建一个max.c的文件,同时打开多个文件
CTRL + W + ↓ 跳转到下面
:set nu 打开行号
按9后按dd 剪切9行
P 粘贴
:wqa 把所有文件保存退出
1
2
3
4
5
6
7
8
9
10
11
make使用
(要有Makefile文件,make执行只能是这个名字,所以先创建Makefile 文件)

vim Makefile
里面的’#'表示注释
1
2
Makefile里面内容
得到什么:需要1 需要2 需要3
编译什么 #如果需要的没有就从下面开始找,并且注意前面是一个table不能6个空格
得到什么:需要1
编译他
例子

hello.out:max.o min.o hello.c
gcc max.o min.o hello.c -o hello.out
max.o:max.c
gcc -c max.c
min.o:min.c
gcc -c min.c
1
2
3
4
5
6
注意make的编译指令是一个TAB,接近于6个空格,但是你不能打6个空格,否则会报错

执行 make,直接输入make就好

make
1
linux c 语言新知识
&& 连接符可以同时执行多条指令,如

gcc main.c -o main.o && ./main.o
1
查看main返回 (也就是正常main 后面return 0)

echo $?
1
c语言里main()函数有2个参数,int argv 和char* argc[],在你需要的时候可以调用他
main(int argv,char* argc[])
argv表示同时执行了几个命令, argc[]里面的内容表示执行命令的内容是很忙

stdin 标准输入流
stdout 标准输出流
stderr 标准错误流
1
2
3
" >>"(输出重定向,不覆盖)如:

(空或者1)1>>a.txt (把输出内容输出到a.txt中) (1为标准输出流,2代表标准错误流)
如: ls >> a.txt
1
2
“>”(覆盖的重定向)
“<”(输入重定向)
把input.txt输入到./a.out中

./a.out <input.txt
1
管道 “|”
把前一个的输出流放到后一个的输入流中
如你写了一个输出流的函数和需要一个输入流的c文件
如下a.c

#include<stdio.h>
int main(){
printf(“1 2”);
}
1
2
3
4
又写了 b.c(需要输入流的c文件)

#include<stdio.h>
int main(){
int a,b;
scanf("%d %d",&a,&b);
printf("%d\n",a+b);
}
1
2
3
4
5
6
gcc a.c -o a.out
gcc b.c -o b.out
./a.out | ./b.out
1
2
3
然后你就会发现输出了3也就是a+b

多个文件编译
自己定义个max.c文件
max.c内容

int max(int a,int b){if(a>b){return a;}else{return b;}}

1
2
3
4
5
6
7
hello.c 里面调用max.c的内容

gcc max.c hello.c -o hello.out
要加头文件:例如 #include “max.h”
max.h里面写 int max(int a,int b);
1
2
3
内存
int *p =&a;

p=p+3 地址指向往下移3位
gcc 编译
p[3] 和 p+=3一样

linux c 语言小结相关推荐

  1. 吴章金: 实例解析 Linux C 语言程序之变量类型

    license: "cc-by-nc-nd-4.0" "本文从编译.二进制程序文件和运行角度逐级解析了 Linux C 语言程序中几种变量类型" 吴章金老师&l ...

  2. 在 Ubuntu 上通过命令行改变 Linux 系统语言

    这是一个快速教程,展示了在 Ubuntu 和其他 Linux 发行版上从命令行改变语言的步骤. 事实上,我一直在写西班牙语的文章.如果你没有访问过它并且/或你是一个讲西班牙语的人,请访问 It's F ...

  3. linux注入内存泄露,Linux 内存泄露小结

    本文仅限记录自己的一次 内存泄露追踪小记. 可能并不十分适用与大家的情况.而且方法也并不是很smart.仅做记录,能提供个思路更好. 一. 要问调试程序遇到什么问题最头疼, 内存泄露肯定能排在前几名里 ...

  4. Linux C语言调用C++动态链接库

    Linux C语言调用C++动态链接库 标签: C调用C++库 2014-03-10 22:56 3744人阅读 评论(0) 收藏 举报 分类: [Linux应用开发](48) 版权声明:本文为博主原 ...

  5. linux C语言多线程库pthread中条件变量的正确用法逐步详解

    linux C语言多线程库pthread中条件变量的正确用法: 了解pthread常用多线程API和pthread互斥锁,但是对条件变量完全不知道或者不完全了解的人群. 关于条件变量的典型应用,可以参 ...

  6. linux C 语言的 system

    linux C 语言的 system是用来在程序中执行shell命令. 使用方法 #include<stdlib.h> //函数形式 int system(const char * str ...

  7. 嵌入式linux寄存器位运算,嵌入式linux C语言(一)――位运算的使用

    嵌入式linux C语言(一)――位运算的使用 ARM是内存与IO统一编址,SoC中有很多控制寄存器,通过对这些寄存器进行位运算对这些控制寄存器进行设置,进而控制外设功能.在修改寄存器某些位的过程中不 ...

  8. Linux 系统维护命令小结

    Linux 系统维护命令小结 工具 功能描述 uptime 系统平均负载率 dmesg 硬件/系统信息 top 进程进行状态 iostat CPU和磁盘平均使用率 vmstat 系统运行状态 sar ...

  9. Linux C语言磁盘U盘容量读取、目录列表读取、文件夹大小读取

    Linux C语言磁盘U盘容量读取.目录列表读取.文件夹大小读取C语言源代码 #include <stdio.h> #include <sys/statfs.h> #inclu ...

最新文章

  1. pandas使用reindex函数为日期索引中有缺失日期的dataframe进行索引重置(所有日期都连续)、并使用fill_value参数为行进行默认填充
  2. 人工智能领域最重要的10大里程碑:AlphaGo征服世人
  3. Matlab学习笔记——矩阵求幂和矩阵指数
  4. 记-crontab定时任务
  5. 关于C++中vector和set使用sort方法进行排序
  6. 【CodeForces - 208C 】Police Station(单源最短路条数,起点终点建图,枚举顶点)
  7. 台式临床化学分析仪行业调研报告 - 市场现状分析与发展前景预测
  8. 【OpenCV的cvSplit函数】
  9. DDD领域驱动设计详解
  10. CSS字体样式设置、CSS文本样式设置
  11. 两种索引:MyISAM(非聚集索引)和InnoDB(聚集索引)的介绍
  12. 打开qq相册回收站一直显示服务器忙,qq照片回收站怎么打不开 手机qq回收站进不去怎么办...
  13. 微信小程序:图片秒加水印制作生成
  14. 基于Python实现可以进制转换和计算阶乘的科学计算器
  15. 焦作网络赛K. Transport Ship
  16. 通过海康sdk实现指定时间段内的录像文件下载
  17. telnet不是内部或外部命令,也不是可运行的程序
  18. [A001]兄弟连3天学会php
  19. MES系统的应用价值
  20. 启动nacos-server报错:java.io.IOException: java.lang.IllegalArgumentException: db.num is null

热门文章

  1. 【实验技术笔记】细胞表型检测之细胞粘附(细胞粘附实验) + 细胞侵袭(transwell实验)
  2. CTF-web 第十一部分 实用脚本
  3. 三角函数和反三角函数的图形
  4. 【职场沟通课】(3)| 万能沟通、沟通禁区、危机中的沟通
  5. [蓝桥杯][2019年第十届真题]灵能传输
  6. 10.21软文推广页面
  7. 身体各个部分减肥方法
  8. 用Proteus仿真Arduino UNO ADC模数转换
  9. 关闭计算机的配色方案更改,win7配色方案已更改为Windows7 Basic怎么改回来
  10. ByteArraySerializer is not an instance of org.apache.kafka.common.serialization.Serializer