当前位置: 首页 > wzjs >正文

济南手机建站模板joomla 多语言网站

济南手机建站模板,joomla 多语言网站,上海房产网官网,纪检监察网站建设的意义一、C语言程序编译的过程 预处理:解释并展开源程序当中的所有的预处理指令,此时生成 *.i 文件。编译:词法和语法的分析,生成对应硬件平台的汇编语言文件,此时生成 *.s 文件。汇编:将汇编语言文件翻译为对应…

一、C语言程序编译的过程

  1. 预处理:解释并展开源程序当中的所有的预处理指令,此时生成 *.i 文件。
  2. 编译:词法和语法的分析,生成对应硬件平台的汇编语言文件,此时生成 *.s 文件。
  3. 汇编:将汇编语言文件翻译为对应处理器的二进制机器码,此时生成 *.o 文件。
  4. 链接:将多个 *.o 文件合并成一个不带后缀的可执行文件。
gec@ubuntu:~$ gcc hello.c -o hello.i -E   👉预处理 
gec@ubuntu:~$ gcc hello.i -o hello.s -S   👉编译
gec@ubuntu:~$ gcc hello.s -o hello.o -c   👉汇编 
gec@ubuntu:~$ gcc hello.o -o hello   -lc  👉链接

二、linux系统的库

在Linux系统中,库(Library)是一组预先编译好的代码和数据,它们可以被其他程序或软件在运行时动态地加载和调用。

简单理解:就是把写好的代码封装到一个 .so (动态库) 或 .a (静态库) 的文件中,后续提供给别人使用。

代码复用:开发者可以将常用的代码段编译成库,供多个程序使用,避免重复编写相同的代码。
模块化:通过将程序划分为多个库,可以更好地管理和维护代码。每个库可以独立更新和优化,而不影响其他部分。
节省资源:动态库可以在多个程序之间共享,不需要每个程序都包含库的副本,这样可以节省磁盘空间和内存。
易于维护和更新:当库需要更新或修复bug时,只需要更新库文件本身,所有使用该库的程序都可以在不重新编译的情况下获得更新。
提高程序性能:库中的代码通常由专家优化,可以提供高效的实现,从而提高整个程序的性能。
保护代码的知识产权: 封装到库中的代码都是已经编译好的二进制代码,用户无法查看其源码。 

三、动态库与静态库的区别

1.动态库以 xxx.so  结尾  , 静态库以  xxxx.a  结尾。
2.动态库在编译阶段不会把代码编译进源程序中。 
3.静态库在编译阶段会把代码编译进源程序中。 
4.静态库的编译文件比较大,动态库编译的文件比较小。  
5.动态库效率比静态库高,但是动态库的环境配置比较麻烦。

1、静态库的制作

1.编写源码的.c 与 .h 头文件 xxxx.c  xxxx.h  2.把.c  文件编译成 .o  文件 gcc xxxx.c  -o  xxxx.o -c 3.把所有的xxx.o 文件封装到一个静态库  xxxx.a 中 
ar  crs  lib??????.a  xxx.o   ......  👉例子:ar  crs   libstring.a   string.o   #把string.o 文件封装到静态库中  提示: ar  -t   静态库名称  #查看当前静态库包含的 .o 文件

(1)静态库的操作命令

ar  t libx.a      #查看静态库中的文件 
ar  d libx.a b.o  #删除静态库中的文件  
ar  r libx.a b.o  #增加文件到静态库中 
ar  x libx.a      #(x意即extract,将库中所有的*.o文件释放出来)
ar  x libx.a a.o  #(指定释放库中的a.o文件)   

2、静态库使用

1.把库文件 和 所有头文件放入一个文件夹中 
gec@PC-20240429TQJF:lib$ ls
a.out  file.h  lcd.h  libPicture.a  list.h  main.c  touch.h2.链接静态库  
gec@PC-20240429TQJF:lib$ gcc  main.c  -L./   -lPicture-L : 说明当前静态库所在的目录  
-l : 说明当前静态库的名称    libPicture.a  原名  👉  -lPicture 链接名 

3、动态库制作

1.编写源码的.c 与 .h 头文件 xxxx.c  xxxx.h  2.把.c  文件编译成 .o  文件 
gcc xxxx.c  -o  xxxx.o -c  -fPIC 3.把 所有的.o 封装成 xxx.so 动态库   , -fPIC与内存地址无关,方便跨平台使用
gcc -shared -fPIC -o libxxxx.so  xxxx.o  .......  

4、动态库使用

1.把库文件 和 所有头文件放入一个文件夹中 
gec@PC-20240429TQJF:lib$ ls
a.out  file.h  lcd.h  libPicture.a  list.h  main.c  touch.h2.链接静态库  
gec@PC-20240429TQJF:lib$ gcc  main.c  -L./   -lPicture-L : 说明当前动态库所在的目录  
-l : 说明当前动态库的名称    libPicture.a  原名  👉  -lPicture 链接名 😱注意😱:动态库链接完毕后,必须把库文件放入系统的  /lib 目录下程序才能正常运行! 

 总结上面可知动静态的库的制作和使用的步骤都基本差不多,首先就是制作:都是先把所有的.c文件成功.o文件,然后就是把所有的.o文件连接成库文件,静态库是:ar crs lib静态库名 .o文件名

动态库是:gcc -shared -fPIC -o lin动态库名 .o文件名

最后就是使用:静态库文件的使用:把所有的头文件加main.c文件放到静态库文件的目录,然后,gcc main.c -L./ -l静态库名(是去头lib,去尾.a)(中间的-L./表示的是这个静态库文件在当前的目录下)

动态库:gcc main.c -L./ -l动态库名(跟上面的一样)

5、制作arm版本静态库

1.交叉编译生成  xxx.o arm-linux-gcc   xxxx.c  -o  xxxx.o  -c2.打包所有.o文件生成libxxxx.a 
/usr/local/arm/5.4.0/usr/bin/arm-linux-ar  crs  libxxxxx.a   xxxx.o   ....  3.链接静态库  
gec@PC-20240429TQJF:armlib$ ls
a.out  file.h  lcd.h  libpic.a  list.h  main.c  touch.h
gec@PC-20240429TQJF:armlib$ arm-linux-gcc   main.c  -L./  -lpic4.把生成的可执行文件下载到开发板中运行即可

6、制作arm版本动态库

1.交叉编译生成  xxx.o arm-linux-gcc   xxxx.c  -o  xxxx.o  -c    -fPIC 2.打包所有.o文件生成libxxxx.so 
arm-linux-gcc  -shared  -fPIC  -o  libxxxx.so  xxxx.o  .......  3.链接动态库
gec@PC-20240429TQJF:armlib$ ls
a.out  file.h  lcd.h  libpic.a  libpics.so  list.h  main.c  touch.h
gec@PC-20240429TQJF:armlib$ arm-linux-gcc   main.c   -L./  -lpics    👉-lpics  链接 libpics.so 动态库 4.把生成的可执行文件下载到开发板中
[root@GEC6818 /]#./a.out
./a.out: error while loading shared libraries: libpics.so:   ❌出现问题!  5.把 libpics.so 动态库下载到开发板的 /lib 目录  

 

总结上面可知arm版本的动静态库的制作和使用的步骤都基本差不多,首先就是制作:(用arm-linux-gcc)都是先把所有的.c文件成功.o文件,(arm-linux-ar crs )然后就是把所有的.o文件连接成库文件,静态库是:rm-linux-ar crs lib静态库名 .o文件名

动态库是:arm-linux-gcc -shared -fPIC -o lin动态库名 .o文件名

最后就是使用:静态库文件的使用:把所有的头文件加main.c文件放到静态库文件的目录,然后,arm-linux-gcc main.c -L./ -l静态库名(是去头lib,去尾.a)(中间的-L./表示的是这个静态库文件在当前的目录下)

动态库:arm-linux-gcc main.c -L./ -l动态库名(跟上面的一样)

但是动态库生成的可执行文件在开发板上是不能直接使用的,要把他的arm版本的动态库文件也上传到开发板的的/bin目录下才可以执行,而arm版本的静态库的可执行文件则不需要。因为编译main.c文件的时候的静态库会编译进源程序中(即可执行文件中),而动态库是链接的方式链接到源程序,所以要把动态库上传到开发板中的/bin中。

至此,希望看完这篇文章的你有所收获,我是Bardb,译音八分贝,道友,下期见!


文章转载自:

http://OhxK8Dcq.zxgzp.cn
http://aEfffof2.zxgzp.cn
http://BKNpHBZU.zxgzp.cn
http://nX8YI8nk.zxgzp.cn
http://9gi8AYRY.zxgzp.cn
http://9x0svrEC.zxgzp.cn
http://tNBLiI7P.zxgzp.cn
http://tI2dG14S.zxgzp.cn
http://I6chcAY0.zxgzp.cn
http://xEcxpjq1.zxgzp.cn
http://HmzR8SFt.zxgzp.cn
http://rUkqmpcj.zxgzp.cn
http://HmEVRhHf.zxgzp.cn
http://YZVW9xXb.zxgzp.cn
http://1XXmp8CJ.zxgzp.cn
http://7oU0AxQT.zxgzp.cn
http://QpwixA4Z.zxgzp.cn
http://m5ZZCmXE.zxgzp.cn
http://oFn7CFR6.zxgzp.cn
http://y0YlUCjo.zxgzp.cn
http://jqP901Th.zxgzp.cn
http://znN6mBIm.zxgzp.cn
http://RHO6HO36.zxgzp.cn
http://Qs3Aoqth.zxgzp.cn
http://Jw0BVelk.zxgzp.cn
http://d9E5pTNk.zxgzp.cn
http://72rkkdVw.zxgzp.cn
http://YZXM37Zz.zxgzp.cn
http://g0yLjodA.zxgzp.cn
http://MHGVoipA.zxgzp.cn
http://www.dtcms.com/wzjs/772694.html

相关文章:

  • 门户网站啥意思wordpress开启新用户注册功能
  • 网站建设的内容管理免费qq刷赞网站推广
  • 安溪网站建设公司网页设计可以从事什么工作
  • 厚街网站建设费用质量好的购物平台
  • 默认网站预览能能显示建设中车牌照损坏在网站做的能用吗
  • 网站建设开发的规划流程百度在线识图查图片
  • 谷秋精品课程网站建设软件手机有办法做网站吗
  • 免x网站网站semseo先做哪个
  • 二七区网站建设php如何做网站
  • 做seo比较好的网站公司购买网站建设费用会计分录
  • 电商网站建设需要数字营销策略有哪些
  • 网站如何做h5动态页面vps搭建wordpress
  • 传奇新开网站网页设计基础入门
  • 外贸网站小语种珠海的网站建设
  • 网站建设太金手指六六十八简单网站搭建
  • 怎样做网站api接口平台类网站有哪些
  • 网站建设合同有哪些怎么在百度做免费推广
  • 建设部物业证书查询官方网站wordpress 命令行高亮
  • 做网站的一些好处国内顶尖的公司
  • 苏宁易购网站上的营销页面专业建设网站多少钱
  • 门户网站类型wordpress打字不显示
  • vue做的博客网站公司做网站的原因
  • 盐城网站开发公司企业网站建设的策划书
  • 苏华建设集团网站荥阳市建设局 网站
  • 西安网站开发招聘郑州网站推广服务
  • 深圳住 建设局网站慈溪哪里有做网站
  • 做ppt的兼职网站广州 flash 网站
  • e盒印网站开发中国企业网查询系统官网
  • 旅游景点网站建设建设部网站监理注销查询
  • asp网站变慢公司网站建设哪个最好