美文网首页
011 2019-06-27 GCC/GLANG 编译文件

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

作者: SanYe_Gz | 来源:发表于2019-06-27 14:15 被阅读0次

编译的参数说明

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 编译文件

      本文链接:https://www.haomeiwen.com/subject/fptrcctx.html