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

百度推广帮做网站润商网站建设服务

百度推广帮做网站,润商网站建设服务,兰州网站建设与优化,潍坊专职消防员待遇下面是Hello World程序源代码文件hello.c的内容#xff0c;我们将以它为例来说明源文件到可执行文件的形成过程#xff0c;主要分4步#xff1a;预处理、汇编、机器码、链接。 #include stdio.h int main () {printf ( hello, world \n );return 0; }…下面是Hello World程序源代码文件hello.c的内容我们将以它为例来说明源文件到可执行文件的形成过程主要分4步预处理、汇编、机器码、链接。 #include stdio.h int main () {printf ( hello, world \n );return 0; } 第一步预处理preprocessing 预处理是将include文件插入将宏定义展开根据条件编译命令选择要使用的代码最后将这些代码输出到一个“.i”文件中 # gcc -E -o hello.i hello.c -E 表示只运行C预编译器 -o file/path 表示输出的文件 1. 默认的搜索头文件的位置在 /usr/include/可用-I dir/path/ 添加搜索头文件的位置。 2. #include有两种形式 #include syshead.h    #include userhead.h 用表示包含系统的头文件用双引号包含用户自定义的头文件。 1使用包含的头文件一般会先搜索 -I 选项后的路径之后就是标准的系统头文件路径/usr/include/ 2用号包含的头文件会首先搜索当前的工作目录之后搜索所搜索的路径。 3. 可用下面的命令寻找头文件库中指定的文件 find /usr/include/ -name socket.h 第二步将C语言转换为汇编语言 -S 表示产生汇编程序文件后停止编译产生的汇编语言文件拓展名为.s # gcc -S -o hello.s hello.i 打开hello.s会看到汇编代码它只包含将本程序代码转成的汇编码不包含被引用的库文件的汇编码因为头文件里面只有被调用库函数的函数接口并没有函数的实现代码。 第三步将汇编语言转换成二进制机器码ELF OBJ文件 -c 表示取消连接步骤即编译源码并在最后生成obj(.o)文件 # gcc -c -o hello.o hello.s 查看hello.o的文件类型 # file hello.o 查看hello.o的文件内容 # hd hello.o 同样obj文件也只包含本程序代码的机器码不包含被引用的库文件的机器码。 第四步链接(link) 链接是将本程序的机器码和被调用的库函数的机器码进行连接形成完整的可执行程序。本程序和库函数的机器码进行连接有两种方式动态和静态默认是动态的连接方式即生成的本程序并不包含库函数的机器码只是含有指向库函数机器码的地址静态的连接方式则是将库函数的机器码包含到生成的可执行文件中。 默认的动态连接方式生成可执行文件hello # gcc -o hello hello.o 静态连接方式生成可执行文件hello_s # gcc -static -o hello_s hello.o 执行可执行程序 # ./hello # ./hello_s 1. 可用-L dir/path/ 指定搜索机器码库文件的位置 2. 可用-lname指示编译器在链接时装载名为libname.a的函数库 3. 可用 -g 在目标文件中嵌入调试信息以便gdb之类的调试程序调试 4. 可用 -D 进行宏定义 hello.o文件只有2K左右动态链接的可执行文件hello有16K左右静态链接的可执行文件hello_s有800K左右。 动态链接的可执行文件hello比hello.o多出的内容是一些头信息、元数据、段信息、符号表、重定位信息静态链接的可执行程序hello_s比hello多出的是库函数的二进制代码。 静态库和动态库 库是指可供其它程序调用的函数和数据动态链接时使用动态格式的库静态链接时使用静态格式的库。 默认的链接对库函数的调用是用动态加载的方式-dynamic-linker /lib64/ld-linux-x86-64.so.2 静态库.a程序在链接时把库的代码拷贝到可执行文件中程序运行时不再需要静态库。静态库比较占用磁盘空间也比较占内存因为每个程序都包含了一份静态库。 ​ 动态库.so或.sa程序在运行时去链接库的代码多个程序共享库的代码这样就减少了程序的体积也减少了内存的占用。 静态库的命名规则 ◆ Linux : libxxx.a ​ lib : 前缀固定 ​ xxx : 库的名字自己起 . ​ a : 后缀固定 ◆ Windows : libxxx.lib 静态库制作和使用方法 # 为了生成静态库.a文件我们需要先生成.o文件 gcc -c add.c div.c mult.c sub.c # ar是gun归档工具rcs表示replace and create如果libcalc之前存在将创建新的libcalc.a并将其替换 ar rcs libcalc.a add.o sub.o mult.o div.o # 将库放到指定位置 cp libcalc.a ../library/lib/ cp head.h ../library/include/ cp add.c div.c mult.c sub.c ../library/src/ # 使用库 gcc main.c -o app -I./include/ -L./lib -lcalc◆ 动态库命名规则 ​ Linux : libxxx.so ​ lib : 前缀固定 ​ xxx : 库的名字自己起 . ​ so : 后缀固定 ◆ Windows : libxxx.dll 动态库制作和使用方法 # 先生成与位置无关的.o文件 gcc -c -fpic add.c div.c mult.c sub.c # 打包生成动态库 gcc -shared add.o sub.o mult.o div.o -o libcalc.so # 放到指定位置 cp libcalc.so ../library/lib/ cp head.h ../library/include/ cp add.c div.c mult.c sub.c ../library/src/ # 使用动态库 gcc main.c -o app -I./include/ -L./lib/ -lcalc # 查看动态库依赖 ldd app # 如果有找不到的动态库可通过以下四种方法解决 # 1. #拷贝.so文件到系统共享库一般指/usr/lib或者/lib/ sudo cp ./lib/libcalc.so /usr/lib/ # 2. 通过临时环境变量添加动态库的搜索位置 export LD_LIBRARY_PATH$LD_LIBRARY_PATH:/root/deroy/library/lib echo $LD_LIBRARY_PATH ldd app # 3. 将环境变量写入到~/.bashrc export LD_LIBRARY_PATH$LD_LIBRARY_PATH:/root/deroy/library/lib source .bashrc # 4. 将环境变量写入到系统环境变量/etc/profile,需要root权限 export LD_LIBRARY_PATH$LD_LIBRARY_PATH:/root/deroy/library/lib source /etc/profile参考资料 https://blog.csdn.net/qq_44519484/article/details/118342896 https://blog.csdn.net/czg13548930186/article/details/78331692 Linux下详解gcc编译过程含代码示例 gcc使用教程_gcc编译命令-CSDN博客 Linux系统下的GCC编译过程、使用命令详解(多文件编译、动态库、静态库-CSDN博客 unix中系统头文件的位置(sys/socket.h)
http://www.w-s-a.com/news/48385/

相关文章:

  • 抽奖的网站怎么做的广州小程序定制开发
  • 网站的文件夹建设企业网站公积金
  • 做网站的的价位网站建设 考试题目
  • 深圳比邻网站建设北京优化服务
  • 菏泽网站建设哪家好电子商务网络安全
  • 仿一个网站广州网站建设正规公司
  • 网站建设 目的seo网站关键词排名快速
  • 什么叫做响应式网站自媒体全平台发布
  • 企业网站 案例哪里需要人做钓鱼网站
  • 厚街东莞网站建设网站开发者调试模式
  • 网站推广营销联系方式wordpress adminlte
  • 哪些网站可以做文字链广告卖水果网站建设的策划书
  • 雕刻业务网站怎么做企业qq官网
  • 新华书店的做的数字阅读网站wordpress编辑器格式
  • jq做6个网站做什么好广西临桂建设局网站
  • 网站新闻图片尺寸南京网站设计公司
  • 重庆seo建站网站服务器 安全
  • 咸宁做网站的公司桂林网站建设兼职
  • 教做网站网站开发行业分析
  • 忻州网站建设培训友情链接交换形式有哪些
  • 佛山做外贸网站渠道外贸常用网站
  • 文章收录网站网站及新媒体建设办法
  • 招聘网站排行榜2021找建网站公司
  • 网站建设制作宝塔面板活动宣传推广的形式有哪些
  • 掉关键词网站敏捷软件开发流程
  • 微信小程序格泰网站建设新闻采编与制作专业简历
  • 电子商城建设网站海伦网站建设
  • 南充能够建设网站的公司有专门做设计的一个网站
  • 免费域名申请个人网站阿里巴巴运营的工作内容
  • 怎么建自己的手机网站保定电子商务网站建设