linux开发入门第一步

前言:

本人14年毕业一直从事嵌入式开发,从单片机程序+电路+PCB设计+物料采购+调试焊接+批量生产+文档整理。那个心碎呀。。

言归正传,对linux一直有接触,但是一直没有整理,感觉零零散散,一点都不圆润。在此从零整理linux,也给自己梳理开发流程,总结开发过程,勿重复造轮子,时间就是金钱,效率就是生命。每项技能吸收成自己的技术,灵活应用,尽早跨过学习成长期,延长收入期。

Gcc编译4个流程:

总结如下:通俗易懂,不失章节。

预处理Pre-Processing)、编译(Compiling)、汇编(Assembling)、链接(Linking


hello.c

#include <stdio.h>

void main()

{

printf("wowowo");

}


第一步(预处理)

        GCC –E hello.c –o hello.i

         GCCstdio.h编译进来。

第二步(编译)

         GCC –S hello.i –o hello,s

         GCC检查代码规范性、语法等、无误后将代码编译成汇编语言。

第三步(汇编)

         GCC –c hello.s –o hello.o

         GCC将汇编代码转化成二进制代码。

第四步(链接)Gcc会到系统默认路径”/usr/lib”下进行查找  ,及链接libc.so.6函数中去。

         GCC hello.o –o hello

 

扩展语录:工作中很少每一步都逐个编译,都是一步到位,生成hello文件。

 

 

函数库:一般在使用第三方的应用的时候会涉及到函数库,比如ssh,加密等。

                   静态库:编译链接时,把库文件代码全部加入到可执行文件中。后缀一般为.a

                   动态库:编译链接时,未把库文件代码加到文件中,在程序运行时链接文件加载库。后缀.so

                            

-I dir:

         Gcc hello.c –I /root/test/ -o hello

         表示在/root/test/目录下搜索头文件。

        Linux中头文件默认放到“/usr/include”目录下。

        Include < 123.h>        :表示在标准路径中搜索头文件(注:默认为“/usr/include”,也可以将*.h所在路径添加到系统环境变量中)。

        Include“123.h”       :表示在本目录中优先搜索。

 

-Ldir

         Gcc hello.c –L /root/test/lib –lsunq –o hello

     表示hello.c 需要用到/root/test/lib 目录下的一个动态库libsunq.so

     由于linux下的库文件命名规定:必须以 lib 3个字母开头。因此在用-l选项指定链接的库文件名时可省去lib 3个字母。Gcc-lsunq处理时,自动连接名为libsunq.so的文件

-I dir”和“-L dir”都只是指定路径,未指定文件,因此不能在路径中包含文件名。

         静态库制作:

gcc –c hello.c ->得到:hello.o

ar crv libmylib.a hello.o 得到 libmylib.a

通过 ar t libmylib.a 可以查看 libmylib.a 中包含的目标文件。

 


总结:

1、预处理阶段

仅仅将 #include”XXX.h”中的需要文件加载进来(经过#if 0  #endif处理后加载)。

条件:C文件中必须有头文件,必须可找到头文件。可以没有库或函数实现体。(-I 找到头文件路径即可,无需指定具体.h文件)。

2、编译

无需任何外部资源,检查即可。

3、汇编

对应的g++/gcc编译; 无需其他资源。

4、链接

使用-L 指定库路径  -llibray  (指定库名字)

动态库

.so动态库

.a静态库

 

结语:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值