Linux begining

常见命令

apt-get install -y [package_name]
apt autoremove [package_name]
sudo
cp -a (-a:复制所有属性) 
mv
cat
rm


gcc编译器、动态链接库、静态链接

gcc test.c [gcc test.o 直接生成可执行文件] 将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。

gcc 选项

-E :输出源码.c/.cpp经过预处理后生成xx.i文件.

-S :输出汇编文件

-C 将 xx.s 汇编文件编译后输出目标代码文件 xx.o

-O[n:1-3]指定编译优化级别

-static 强制使用静态链接库.


GCC 在链接时优先使用动态链接库,只有当动态链接库不存在时才考虑使用静态链接库,如果需要的话可以在编译时加上-static 选项,强制使用静态链接库.

gcc 动态链接库 .so

生成动态链接库

Tip: -fPIC -share -o xxx.so

gcc test_a.c test_b.c test_c.c -fPIC -shared -o libtest.so

使用动态链接库

Tip: -L _ -l_ -o

/home/xiaowp/lib/ 目录下有链接时所需要的库文件 libfoo.so ,为了让 GCC 能够顺利地找到它,可以使用下面的命令 [gcc xx.c -L 路径 -l库名(除去前缀lib后的库名) -o 可执行文件名]:

gcc foo.c -L /home/justin/lib -lfoo -o foo


gcc 静态链接库 .a
```ar rcs  libxxx.a xx1.o xx2.o```

生成静态链接库
> Tip:将多个/单个 xx.o 目标代码文件 用ar命令打包转换成 xx.a 静态库文件

指定使用静态链接库
> Tip: -L _ -static -l_ -o 

```gcc foo.c -L /home/justin/lib -static -lfoo -o foo```

---

#### gdb
> 使可执行文件支持gdb: ```gcc -g 源文件.c -o 输出的目标文件```

 
```shell
gdb filename 启动GDB 载入程序
- l 查看程序(带行号) 
- start -run 开始运行
- b n 在n行处下断点
- n 下一步
- set var i=n 设置变量i 值为 n
- print var 打印变量var 的值

makefile

shell编程

Valgrind[了解]

Linux下C++程序中的内存泄露检查工具.原理仿真环境调试.