gcc静态链接与动态链接,gdb test,$^依赖$@目标$<

一GCC学得的知识总结

(1)

编译链接gcc hello.c -o hello

只编译不链接gcc -c hello.c

如果出现gcc -c hello.c -o hello;则会报错

[root@embedclub gcc]# gcc -c hello -o hello
gcc: hello:未使用链接器输入文件,因为链接尚未完成

 

产生调试信息gcc -g hello.c -0 hello

-rwxrwxr-x 1 root root 5743  5月 21 09:16 hello   //加小d,5743变大

-rwxrwxr-x 1 root root 4639  5月 21 09:17 hello  //不加小d,4639相对小

优化,速度快gcc -O hello.c -0 hello

查看时间长短time ./hello

[root@embedclub gcc]# gcc -O hello.c -o hello
[root@embedclub gcc]# ls
hello  hello.c  hello.o
[root@embedclub gcc]# time ./hello
hello world

real    0m0.001s
user    0m0.000s
sys     0m0.000s
[root@embedclub gcc]# rm hello
rm:是否删除普通文件 "hello"?y
[root@embedclub gcc]# gcc hello.c -o hello
[root@embedclub gcc]# time ./hello
hello world

real    0m0.001s
user    0m0.000s
sys     0m0.001s
[root@embedclub gcc]#

 生成警告信息gcc -Wall hello.c -0 hello

不生产警告信息gcc -w hello.c -0 hello

-YES(大写的字母)相当与在程序里使用宏定义#define YES

 

(2)

静态链接与动态链接

静态:每个文件里都有.h

动态:去调用固定文件里的.h

这里出了问题,编译不成功

(3)

linux头文件在/usr/include/

自己编写的头文件,

pwd查看当前目录

在编译时gcc -I/home/lesson/part1 hello.c -o hello

[root@embedclub gcc]# touch a.h
[root@embedclub gcc]# ls
a.h  hello.c
[root@embedclub gcc]# pwd
/home/embedclub/yingyong_test/gcc
[root@embedclub gcc]# gcc -I/home/embedclub/yingyong_test/gcc hello.c -o hello
[root@embedclub gcc]# ls
a.h  hello  hello.c
[root@embedclub gcc]#

二GDB学得的知识总结

(1)启动调试的两种方式:

第一种
gdb test//启动起来

b main//打断点

run//运行

n//一步一步运行

c//直接全部运行
第二种
gdb
file test

(2)

l   //查看程序

b 函数名 //在函数入口处添加断点

b 行号     //在指定行添加断点

b file:行号 //在指定文件的指定行号添加断点

(3)

info b  //查看断点信息

delete 1//删除断点1

print 1 //查看断点一处信息

n//单步执行

s//单步执行(不进子函数)

 

(4)quit //退出调试

三编译makefile的总结

(1)

目标 依赖 命令

main.o : main.c

     gcc -c main.c

(2)

$^代表所有依赖文件

$@代表所有目标文件

$<代表第一个依赖文件

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值