linux系统下基于VSCode和CMake进行C/C++开发

linux系统下如何学习开源代码?

1.gcc编译器

如果是c语言,使用gcc编译器
如果是c++语言,使用g++编译器

1.1.g++编译过程

 g++ -E test.cpp -o test.i
 g++ -S test.i -o test.s
 g++ -c test.s -o test.
 g++ test.o -o test1

预处理
编译
汇编
链接

1.2.g++重要编译参数

-g

g++ -g

产生包含可调式信息的可执行文件

-o2

g++ -o2

优化源代码
一般选择o2就够用了,默认为o1

time ./test

通过time命令执行test可执行文件。

-l和-L 指定库文件和库文件路径

/lib
/usr/lib
/usr/local/lib
里面的库直接使用-l参数就能链接

g++ -lglog test.cpp

链接glog库
如果库文件没有在上面三个目录里面,需要使用-L参数(大写)指定库文件所在目录。

g++ -L/home/rdm/test -lmytest test.cpp

链接/home/rdm/test路径下的mytest库

-I 指定头文件搜索目录

默认头文件所在目录:/usr/include
-I是include的缩写。
如果

-Wall 打印警告信息

-w 关闭警告信息

-std=c++11设置编译标准

-o 指定输出的文件名

不加 -o,默认输出a.out可执行文件

-D 定义宏

编译的时候定义宏

man指令

查看执行的英文手册

man gcc

1.3.实战:g++命令行编译

tree .

打印当前文件夹下代码的目录结构


dmran@** ~/rdm/code  21:43 $ tree ./
./
├── include
│   └── swap.h
├── main
├── main.cpp
└── swap
    └── swap.cpp

1.3.1直接编译

编译命令

 g++ main.cpp swap/swap.cpp -Iinclude -o main

1.3.2 链接静态库生成可执行文件

1).汇编,生成swap.o文件


dmran@** ~/rdm/code/swap  21:51 $ g++ -c swap.cpp -I../include
dmran@** ~/rdm/code/swap  21:52 $ ls
swap.cpp  swap.o

2).生成静态库libswap.a


dmran@** ~/rdm/code/swap  21:52 $ ar rs libswap.a swap.o
ar: creating libswap.a
dmran@** ~/rdm/code/swap  21:53 $ ls
libswap.a  swap.cpp  swap.o

3).链接生成可执行文件:static_mian

dmran@** ~/rdm/code  21:55 $ g++ main.cpp -lswap -Lsrc -Iinclude -o static_main
dmran@** ~/rdm/code  21:56 $ ls
include  main  main.cpp  src  static_main

1.3.3 链接动态库生成可执行文件

-shared

表示生成动态库

1).生成动态库


rdm@** ~/rdm/code/src  22:06 $ g++ swap.cpp -I../include -fPIC -shared -o swap.so
rdm@** ~/rdm/code/src  22:06 $ ls
libswap.a  swap.cpp  swap.so

上面的命令相当于下面两条命令:


rdm@** ~/rdm/code/src  22:09 $ g++ swap.cpp -I../include -fPIC -c
rdm@** ~/rdm/code/src  22:09 $ ls
libswap.a  swap.cpp  swap.o
rdm@** ~/rdm/code/src  22:10 $ g++ -shared -o libSwap.so swap.o
rdm@** ~/rdm/code/src  22:10 $ ls
libswap.a  libSwap.so  swap.cpp  swap.o

2).链接,生成可执行文件

g++ main.cpp -lswap -Lsrc -Iinclude -o dyna_main

LD_LIBERARY_PATH指定动态库的查找路径

2.gdb调试器

2.1 gdb常用命令参数

2.2 实战

再gdb调试环境下,按一下【ctrl+l】清屏。

shh远程终端如何分屏

3.IDE-VSCode

4.CMake

5.实战:使用VSCode进行完整项目开发

你可能感兴趣的:(linux,vscode,c语言)