gcc的用法小结:
gcc test.c -o test 一步到位编译直接生产可执行文件,有多个源文件的话,直接列出来即可。
gcc test.o -o test 链接目标文件生成可执行文件,可列多个目标文件
gcc -c text.c 编译生成目标文件
gcc -g text.c 生成带调试信息的可执行文件,用于gdb调试
编译的时候指定到哪里去找头文件和链接库文件,和连接某个库:
gcc main.c -I/mnt/include -L/mnt/lib -lstack -o main
-L 代表要到哪里去寻找库文件
-I 代表要到哪里去寻找头文件
-l 代表连接那个库文件
生成静态库文件:
ar rs libstack.a a.o b.o c.o //这其实是将多个.o文件打包
生成动态库文件:
先编译: gcc -c -fPIC test.c h.c d.c
再连接:gcc -shared -o libstack.so test.o h.o d.o
gdb调试命令:
gdb main 启动调试之后进入gdb命令模式,此时程序还没有运行
gdb各种命令:
set args .... 设置程序的命令行参数
list 列出源代码
b 10 在第10行下个断点
r 让程序开始运行
n 单步执行
回车键 重复上一个命令
s 进入函数中执行
p </d /x> 变量名 显示变量名
finish 一直运行直到退出本函数
quit 退出调试
例子:如何显示std::string tempStr,
p (char*)tempStr
linux环境变量的设置:
1 直接在命令行输入:export PKG_CONFIG_PATH=/usr/lib/pkgconfig/:$PKG_CONFIG_PATH,只是单次有效,退出系统失效。
2 当前用户一直有效:
$ sudo vim ~/.profile(or .bashrc) 然后在文件末尾添加export PATH=”$PATH:your path1:your path2 ...”
3 在系统范围内有效:
¥ sudo vim /etc/profile 然后在文件末尾添加export PATH=”$PATH:your path1:your path2 ...”
pkg-config的使用:
首先设置环境变量,将.pc文件的路径添加到PKG_CONFIG_PATH环境变量里面,然后
1 在gcc命令中直接使用
gcc -o hello hello.c `pkg-config --cflags --libs libavformat libavcodec`(注意:此处不是单引号,而是键盘左边数字键'1'左侧、
Tab键上侧的[`]),千万别弄错哦!)
2 在makefile中使用:
CFLAGS += `pkg-config --cflags libavformat libavcodec libavdevice libswscale x264`
LIBS += `pkg-config --libs libavformat libavcodec libavdevice libswscale x264`
检查某个库文件的include路径和lib路径,看看是否正确的命令:
pkg-config.exe --cflags zlib //前提是zlib.pc文件的路径已经在PKG_CONFIG_PATH环境变量里面才能查到
pkg-config.exe --libs zlib
上面这两个命令会分别列出zlib库的头文件,和lib文件所在的路径。
linux注销用户的命令:
logout
linux关机:
sudo shutdown -h now
linux上查看某个动态连接库的依赖关系的命令:
x86: ldd *.so
arm: arm-linux-readelf -d *.so