cmake编译C++程序——Linux环境

20 篇文章 2 订阅

g++编译过程

分布编译

  • 基本流程:E S c o
  1. 预处理:-E // .i文件
    -E 选项指示编译器仅对输入文件进行预处理
g++  -E test.cpp  -o test.i   //.i文件
  1. 编译:将预处理的.i文件编译成.s文件 // .s文件
    -S 编译选项告诉 g++ 在为 C++ 代码产生了汇编语言文件后停止编译
g++  -S test.i  -o   test.s
  1. 汇编:-c 把源代码编译为机器语言的目标代码
g++  -c test.s  -o test.o
  1. 链接:-o 生成可执行文件
g++ test.o  -o test
  • 上面四步可综合为一步指令:直接-o进行编译
g++ test.cpp -o test

优化代码

  • 在编译时,可直接加入参数可对代码进行优化,优化后可是代码的执行时间缩短、效率提高。
    优化参数共有四个:
    -O 同时减小代码的长度和执行时间,其效果等价于-O1
    -O0 表示不做优化
    -O1 为默认优化
    -O2 除了完成-O1的优化之外,还进行一些额外的调整工作,如指令调整等。
    -O3 则包括循环展开和其他一些与处理特性相关的优化工作。
    选项将使编译的速度比使用 -O 时慢, 但通常产生的代码执行速度会更快。
    一般选择-O2就够了
    该参数O为(大写)的O,并写在小写-o前面
// 不做优化的编译:
g++ test.cpp -o test

// 使用-O2的的优化编译
g++ test.cpp -O2 -o test

指定头文件所在目录

  • 参数-I:(大写的i),后面直接加路径,不需要空格
# 最初目录结构
├── include
│   └── Swap.h
├── main.cpp
└── src
   └── Swap.cpp
# 编译
g++ main.cpp src/Swap.cpp -Iinclude -o out

链接库文件

  • -l:连接在/lib、 /usr 、/usr/local/lib目录下的库文件
  • -l后面直接加库名,不需要空格
  • -L: 连接不在以上三个目录下的库文件需要使用-L来指定库文件路径,然后使用-l来链接指定库文件
// 链接ffmpeg库
g++ test.cpp -o test -lffmpeg

g++ test.cpp -o test -L/home/bing/mytestlibfolder -lffmpeg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值