Linux下使用gcc和gdb调试程序

时间:2023-02-20 17:01:57

1. gcc

1> 编译动态链接库

gcc -shared hello.c -o libhello.so

2>编译主程序文件

gcc -g -rdynamic -o main main.c -ldl

-ldl:显式加载动态库的动态函数库。

动态库的动态库函数包括:dlopen()、dlclose()、dlerror()、dlsym()。

当主程序在调用动态库时使用的是动态调用方式即使用了上述函数,那么在编译时需要添加-ldl参数,否则编译不过。

-rdynamic

选项 -rdynamic 用来通知链接器将所有符号添加到动态符号表中
(目的是能够通过使用 dlopen 来实现向后跟踪)

3>基本知识

更详细的gcc功能介绍来自“简单,可复制”的博客,附上链接供后续学习使用。http://www.cnblogs.com/ggjucheng/archive/2011/12/14/2287738.html。

2. gdb

linux下如何用GDB调试c++程序:http://blog.csdn.net/wfdtxz/article/details/7368357

3. 动态链接库

1>动态链接库编译方式

gcc -fpic -shared mylib.c -o mylib.so

-fpic:PIC(position independent code)位置无关代码,下面文章中解释的非常清楚。

http://www.linuxidc.com/Linux/2011-06/37268.htm

2>gcc编译生成静态及动态链接库步骤

http://my.oschina.net/u/1270343/blog/167137