库的使用与生成+库的分类+如何制作库+如何使用库+动态编译与静态编译+如何配置针对arm的开发工具链

1,库的使用与生成
1,如果你不想你的代码公开出来的时候我们会用到库
只能给人调用,别人看不到代码的原型
2,库的作用:
1,提高代码的可移植性
2,加强加密性


库的分类:
1,静态库:
特点: 1,程序编译的时候如果使用到这个库的函数,是将这个函数的代码连同程序代码一起编译,把函数的代码放入程序里面
2,代码不需要依赖于环境


3,这样编译,代码比较大


2,动态库:
特点: 1,程序编译的时候如果使用到这个库的函数,是将这个函数的代码连同程序代码一起编译,但是不把函数的代码放进程序里面


2,程序需要依赖于环境(在我的执行环境中必须要有这个库文件)


3,代码比较小




3,如何制作库:
1,如何制作静态库:
gcc hello.c -o hello.o -c (让他停留在编译的阶段,生成.o)
ar rc libhello.a hello.o (归档生成静态库)


2,如何制作动态库:
gcc -shared hello.c -o libhello.so(生成动态库)




4,如何使用库:
1,库的编译都是一样的:
gcc main.c -o main -L /mnt/hgfs/share -lhello

如果还有别的头文件路劲:
gcc main.c -o main -I ./include -L /mnt/hgfs/share -lhello


静态库加一个static:
gcc -static main.c -o main -L /mnt/hgfs/share -lhello

如果还有别的头文件路劲:
gcc -static main.c -o main -I ./include -L /mnt/hgfs/share -lhello

其中:
-L:指定库的路径
-l:指定库名(lib库名.库尾缀)
如果在这个路径下同时存在静态库与动态库,优先以动态库的形式去编译,如果你想用静态库(-static)


2,库的使用:
1,静态库编译后,程序是不需要依赖他的,所以,程序运行可以不用管这个库在哪里或者有没有

2,动态库编译后,程序需要依赖他,程序运行之前一定要把库文件放进系统的库的环境变量路径当中
(所以就知道为什么移植jpeg库的时候要把动态库拷贝到开发板的lib当中的原因)

或者:
  不放到/lib当中,并且配置相应的环境变量,使得系统(开发板)知道增加了库文件:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:库文件所在路径(比如/01/lib)




2,动态编译与静态编译
1,区别在与编译的时候有没有加static关键字


2,动态编译的时候,程序调用的函数默认是以动态库的形式编译的,简单说就是程序编译没有调用函数的原型代码编译进去,只是在运行的时候去调用我们的库


3,静态编译的时候,程序调用的函数默认是以静态库的形式编译的,简单说就是程序编译调用函数的原型代码编译进去,只是在运行的时候不需要依赖于这个库





3,如何配置针对arm的开发工具链
1,获取工具链(公司获取)
2,工具链的使能(arm-2009q3)
将他解压到/usr/local/arm/


3,更改环境变量脚本
只针对本用户生效:~/.bashrc
针对整个系统全局生效:/etc/bash.bashrc
在后面添加一句:
export PATH=/usr/local/arm/arm-2009q3/bin:$PATH


ps:如果有两个工具链名字一样,你需要屏蔽另外一个










  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值