包含头文件和库:
-Idir: 指定编译查找头文件的目录,常用于查找第三方的库的头文件,例:gcc test.c –I../inc -o test。 -Ldir : 指定链接时查找lib的目录,常用于查找第三方库。 -llibrary 指定额外链接的lib库宏定义
-DMACRO 以字符串"1"(默认值)定义 MACRO 宏。 -DMACRO=DEFN 以字符串"DEFN"定义MACRO 宏,注意中间不能有空格。 -UMACRO 取消对 MACRO 宏的定义。调试和可执行文件形式:
-g 指示编译器,在编译的时产生调试信息。 -ggdb 尽可能的生成gdb的可以使用的调试信息(比-g生成的信息更多些)。 -static 禁止使用动态库,编译得到的程序会比较大,但可以自由运行。 -share 尽量使用动态库,所以生成文件比较小,但是需要系统由动态库。告警选项 -Wall 产生尽可能多的警告信息,建议始终带上 -Werror 将所有的警告当成错误进行处理静态链接库: 1.通过gcc –c命令将stack.c编成stack.o gcc -c stack.c 2.通过ar命令将stack.o封装成libstack.a ar cr libstack.a stack.o #多个.o打包成.a文件 3.链接 gcc -o run main.c -L.(库目录) -lstack(库) 库名: libstack.a 库:stack(去掉lib和后缀得到)#可以合并多个.o文件 ar cr libtest.a first.o second.o third.o#查看打包了哪些.o文件
ar -t xxx.a#动态链接库
1.通过gcc –c命令将stack.c编成stack.o
gcc -c stack.c 2. gcc -shared -o libstack.so stack.o 3.链接 gcc -o run main.c -L.(库目录) -lstack(库) gcc -o run main.c -L. -lstack gcc -o run main.c -L. -lstack -Wl,-rpath,dir14.指定动态链接库的地址
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:. 5.运行 ./run#查看需要的动态链接库ldd run#动态链接库搜索目录
1. 环境变量 LD_LIBRARY_PATH 2. 从/etc/ld.so.conf找(用ldconfig刷新缓存) 3. 默认的系统路径, 先是/lib(/lib64)然后是/usr/lib (/usr/lib64) 4. 还可以编译时指定搜索路径 -Wl,-rpath,dir1:dir2:...:dirN (多个冒号间隔)#ldconfig -v | grep b.so http://www.cnblogs.com/TianFang/archive/2013/01/19/2867296.htmlhttp://www.cnblogs.com/TianFang/archive/2013/01/18/2866952.htmlhttp://www.cnblogs.com/TianFang/archive/2013/01/19/2867296.htmlhttp://m.blog.csdn.net/blog/liuxing_lanyue/20067423