c++ 学习总结

这篇博客总结了C++学习中常见的segmentation fault原因,介绍了如何将*.o文件打包成静态链接库*.a,推荐了Windows环境下用于大型C++项目的Source Insight编辑器,并详细讲解了Linux下makefile的编写和使用。内容包括依赖关系、规则和自动化变量的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、出现segmentation default的原因:这个内存区要么是不存在的,要么是受到系统保护的。

      例如:char *p=null,之后直接使用p而并没有进行malloc,就会出现这种错误。

2、*.o文件打包成*.a静态链接库文件

  • ar crv *.a  *.o(可以多个*.o文件)
  • 如果想把 *.o 附加到静态库*.a中,可以用q选项,即 ar q *.a 多个.o文件

3、windows下打开大的c++工程,source insight比较好用

4、make是linux下程序维护的工具:

  • make的时候,自动搜索makefile、Makefile,可命名Makefile,这样保证ls的时候,它排在前面。
  • Makefile的目标可以放到all里面,否则它会默认只更新第一个目标。
  • make由两部分组成:依赖关系+规则(命令)。每个规则所在的行,必须以tab开头,非空格键。makefile中tab和空格是不同的。
  • 摘自,http://www.chinaunix.net/old_jh/23/408225.html

objects = foo.o bar.o 
    all: $(objects) 
    $(objects): %.o: %.c 
            $(CC) -c $(CFLAGS) $< -o $@ 

上面的例子中,指明了我们的目标从$object中获取,“%.o”表明要所有以“.o”结尾的目标,也就是“foo.o bar.o”,也就是变量$object集合的模式,而依赖模式“%.c”则取模式“%.o”的“%”,也就是“foo bar”,并为其加下“.c”的后缀,于是,我们的依赖目标就是“foo.c bar.c”。而命令中的“$<”和“$@”则是自动化变量,“$<”表示所有的依赖目标集(也就是“foo.c bar.c”),“$@”表示目标集(也就是“foo.o bar.o”)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值