011 2019-06-27 GCC/GLANG 编译文件

编译的参数说明

gcc/clang -g -O2 -o test test.c -I -L -l

参数说明 

-g:输出文件中的调试信息

-O:对输出文件做指令优化

-o:输出文件

-I:指定头文件位置(有可能引用的文件与当前文件不在同个目录)

-L:指定库文件位置(所引用三方库文件位置,例如使用FFmpeg下面的某些库)

-l: 指定使用哪个库


通过编译生成静态库.a文件

通过自己编写的c文件可通过编译生成.o文件,例如 现在编写了一个函数实现的add函数

编译语句:

gcc -g -c test.c 该命令生成指定的 test.o文件   但是由于test.o不带main函数入口,所以不能直接通过  ./test.o执行

再通过命令生成 静态文件.a  ,生成命令  :

libtool -static -o libmylib.a  会生成静态库 mylib.a  (注: libmylib  前面的lib是必须写的,实际库的名称  是mylib)


完整例子

我们编写一个加法的函数add 


addLib.c

编写访问该函数的头文件.h


addLib.h

然后编译addLib.c,通过编译我们可以得到addLib.o文件,再通过addLib.o生成静态库.a文件 ,步骤如下:

① 编译成.o文件  gcc/clang -g -c addLib.c

② 生成静态库文件.a    libtool -static -o libmyaddlib.a addLib.o

通过以上两步,可用得到库 : libmyaddlib.a文件


再编写测试类 addTest.c


addTest.c

编译addTest.c文件:

gcc -g -o addTest addTest.c -I . -L . -lmyaddlib   (注: 这里库的名称必须是之前生成库名称前面去掉lib之后的名称)

通过以上步骤,可以获取编译后的 addTest.o文件,继续执行文件:

./addTest 

可用得到执行结果,也就是输出 30

你可能感兴趣的:(011 2019-06-27 GCC/GLANG 编译文件)