标签:
1. 编译选项-E、-S、-c
选项告诉gcc编译过程停在哪一步(源程序到目标程序大致经历预处理、编译、汇编、链接等阶段)。
-c 编译或汇编源程序文件, 不链接
-S 停止编译后的阶段, 生成汇编代码, 不汇编
-E 停止预处理后的阶段,
-I(大写i)添加头文件的搜索路径
-L添加库文件搜索路经
2. 静态库
gcc -c add.c -o add.o
ar rcs libadd.a add.o
gcc -o main main.c /lib/libadd.a
gcc -o main main.c -L/lib -ladd
add.c如下
#include "add.h" int add(int a, int b) { return a + b; }
add.h如下
#ifndef __ADD_H__ #define __ADD_H__ int add(int a, int b); #endif
main.c如下
#include <stdio.h> #include "add.h" int main(int argc, char *argv[]) { int sum = 0; int i = 0; if(argc >= 3) { //for(i = 1; i < argc; i++) printf("argv[%d] = %s\n", i, argv[i]); sum = add(atoi(argv[1]), atoi(argv[2])); } else { printf("too little argment!\n"); } printf("sum = %d\n", sum); return 0; }
执行结果如下
3. 动态库
gcc -fPIC -g -c add.c -o add.o
gcc -shared -o libadd.so add.o
gcc -o main main.c -L. -ladd
同样的代码执行如下:
标签:
原文地址:http://www.cnblogs.com/zhanglong71/p/5248073.html