1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > gcc -I(大写i) -l(小写l) -L(大写L)的使用小结

gcc -I(大写i) -l(小写l) -L(大写L)的使用小结

时间:2022-09-20 16:07:38

相关推荐

gcc -I(大写i)  -l(小写l) -L(大写L)的使用小结

我们在Unix/Linux系统编程时,会涉及到库、 头文件等文件的引用,这个在IDE中,IDE软件界面中提供了配置接口,比如IAR中的预编译,画面如下:

上面的红框的意思就是告诉 编译器,要将上面的目录包含,一起编译,Keil和其他的IDE中也有类似的操作。

在Unix/Linux下,是信奉“自己动手,丰衣足食”的理念的,这些库、头文件引用包含的操作,都是需要自己写代码来 实现的。假设我们的交叉编译环境就是gcc,我们先来概括下"-I"(大写i)、 "-l"(小写l)、"-L"(大写L) 这3种选项的作用

"-I"(大写i) :可以理解为 include,是 实现 包含各种头文件的功能。

"-L"(大写L):可以理解为 location ,这个和"-l"(小写l) 配合使用的,告诉编译器 要引用的“库”所在的位置。

"-l"(小写l):可以理解为 library ,这是后面要跟“库”名字,告诉编译器 要引用的具体“库”名字。

注意:“库”的名字是有标准格式的,一般都是"lib"字符串开头,比如libxxx.so、libxxx.a等,把库文件名的头"lib"和尾".so"去掉就是这个库的 简称了,这样我们在使用"-l"(小写l)引用库的时候,不用带lib了,而是-lxxx。

还是来举个例子吧,假设我们的应用程序里, 需要使用库文件libmodbus.so,同时还要使用这个库文件的 几个头文件 modbus.h、modbus_rtu.h,而我们的应用程序是 man.c,文件夹结构如下所示

#文件夹、文件 包含内容lib--------------> libmodbus.soinclude----------> modbus.h modbus_rtu.hmain.c

交叉编译环境假设是gcc,那么我们在进行编译时,编译命令如下:

gcc -o AppModbus main.c -L./lib -lmodbus -I./include# AppModbus : 可执行程序,编译结果# main.c : 源文件# -L./lib:引用的 库 所在位置,即 当前目录下的 lib 文件夹中# -lmodbus:引用的 库 名称,即 modbus 库,这个因为 lib中的文件是 libmodbus.so,去掉头尾就是#真正的库名字。# -I./include :要包含的头文件位置,即 当前目录下的 include 文件夹。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。