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