GCC编译器之头文件,库文件

第一   头文件的作用是对函数的声明,在程序的编译过程中(包括预处理,编译,汇编),编译器会去#include " "或者#include < >下去寻找头文件,其中#include " "指的是在当前c文件的目录,#include < >指的是系统目录(严谨的来说是工具链的目录)和自己指定的目录(格式为 -I <dir>)。

第二   库文件的作用是提高工作效率(防止外泄源码),在程序的链接过程中,编译器会去系统目录(严谨来说是工具链的目录)或者自己指定的目录(格式为 -I <dir>)下寻找库文件;找到库文件路径后,会去使用具体哪个库文件呢?格式为 -Iname,即例如libname.so(动态库)。

第三   当程序来到运行阶段时与.c和.h文件没有任何关系,因为我们运行程序通常把程序放到开发板上运行,所以与编译出来的程序和动态库有关系,在运行时程序和动态库才组装在一起,编译器会去系统目录下(开发板的/lib,/usr/lib,...)或者自己指定的目录下(命令格式为 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/a)寻找动态库,寻找具体哪一个动态库呢?其实在链接的时候就已经确定了(例如:arm-linux-gcc -o hello main.o -lhello -L ./),但是链接的时候只是在PC端上而已,运行程序时是在开发板上运行,运行跟链接是两码事,所以运行时可以将动态库拷贝到开发板的/lib,/usr/lib目录下或者自己指定export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./

 

(注意:这里以hello.c,hello.h,main.c为例,说明以下工具链的配置,当执行gcc -o hello main.c hello.c 时是给x86或者PC端编译的,而执行arm-linux-gcc -o hello hello.c main.c 或者 arm-buildroot-linux-gnueabihf-gcc -o hello hello.c main.c 时是给ARM板编译使用的)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有才华是油菜花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值