linuxC开发环境

1.嵌入式编辑器vim
vim有三种模式
(1)命令行模式
x:删除一个字符
nx:删除n个字符
dd:删除一行
ndd:删除n行
yy:复制一行
nyy:复制n行
p:粘贴
u:撤销操作
gg:回到文本首行
shift + g:回到文本末行
%:光标跳到配对括号上
^:跳到行首
$:跳到行尾
*:查找
shift zz:保存并退出

(2)插入模式(按a/i进入)

(3)底行模式(按:或/进入)
:w:保存
:wq:保存退出
:wq!:保存强制退出
:q!:强制退出
:n:跳到第n行
:%s/old/new/:把全文的old替换成new
:sp filename:同时打开第二个文件(ctrl ww 来在两个文本中切换
:set nu:添加行号
:set nonu:去除行号
/main:查找main(按n往后寻找,N向前寻找)
/xxxxx:消除高亮
:nohl:消除高亮
注意:用vim/etc/vimrc 命令来修改vim配置,包括:set autoindent(自动缩进)、set shiftwidth=4、set tabstop=4(来设置tab键自动补全几格)、set number(来设置vim文本是否标有行号)、syntax on(关键字高亮)、set hlsearch(搜索高亮),用**"**来注释隔离,在ubuntu中是用vim/etc/vim/vimrc来修改vim配置

2.嵌入式编译器gcc
完整的编译分成四个步骤:
(1)预处理:处理所以#开头的代码(#inclue(展开头文件)、#define(宏定义替换)、#if(条件编译)),把内容加载到test.c的首部
gcc -E test.c -o test.i(-E代表只进行预处理,-o代表输出什么文件)
(2)编译:进行语法检查、词法检查、语义检查后把c代码变成汇编代码
gcc -S test.i -o test.s(-S代表只进行编译)
(3)汇编:把汇编文件变成二进制文件,即目标文件(计算机只识别二进制代码,不识别高级语言)
gcc -c test.s -o test.o
(4)链接:链接需要用的代码(库或者其他文件),生成可执行文件
gcc test.o(所有.o) -o test (默认为动态编译)
注意:gcc命令生成的可执行文件有三种格式:a.out、COFF、ELF(主流格式)

2.1编译分动态编译和静态编译
(1)动态编译:程序运行时链接函数库,优点:文件小,缺点:对运行环境要求高,需要动态库(.so)。
(2)静态编译:在链接阶段把目标文件和函数库文件链接,优点:对运行环境没有要求,缺点:文件大。(静态库.a)
注意: 多个源文件需要调用函数库时,用动态链接;较少源文件调用函数库则用静态链接

2.2制作静态库(面试
(1)编写main.c,show.c,print.c
(2)把show.c和print.c变成二进制文件:gcc -c show.c print.c (会自动生成show.o print.o)
(3)生成静态库:ar -crv libxx.a show.o print.o
(4)静态编译:gcc main.c -o main -L . -lxx -static(-L告诉编译器静态库的位置,-l告诉编译器链接的静态库的名字,-static指定是静态编译)
(5)运行文件:./main

2.3制作动态库
(1)编写main.c , show.c , print.c
(2)生成动态库:gcc -fPIC -shared -o libxxxx.so show.c print.c
(3)动态编译:gcc main -o main-dynamic -L . -lxxxx
(4)把动态库复制到系统默认目录下/user/lib:cp libxxxx.so /user/lib
(5)运行文件:./main-dynamic(运行时去默认目录)

3.工程管理器Makefile
以一段程序来简单说明Makefile的应用
vim main.c print.c show.c
vim Makefile

Target=main
Object=main.o print.o show.o
空行
$(Target) : $(Object)
tab gcc $(Object) -o $(Target)
#把clean声明成伪目标
.PHONY:clean
clean:
rm .o*

make:生成main 以及 .o文件
make clean:清除.o文件

4.调试器GDB
gcc test.c -o test -g 对想要调试的文件编译时需要加上-g
gdb test 进入调试状态

run 运行 (r) r “行数” 可以让程序从指定的行数开始运行
list 显示代码,一次显示十行(l) , list 10 代表显示5-10行
break 打断点(b) 可以使用行号或函数名,程序会在断点行数的前一行暂停运行
continue继续运行(c)
print 打印变量的值(p) 只有在对应的函数中才能打印出真正的值 print + 参数
next 执行下一条语句,单步执行(n) 跳过函数
stop 执行下一条语句,单步执行(s) 进入函数
quit 退出
info b 显示断点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值