当前位置: 首页 > 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.hkea.cn/news/178158/

相关文章:

  • 网站开发 前景网络推广代理
  • 温州整站推广咨询seo网站推广专员
  • 企业营销型网站团队百度seo排名优化教程
  • 安徽平台网站建设哪里好网络策划与营销
  • 做网站接广告赚钱么凡科建站和华为云哪个好
  • 成都网站建设科技公seo营销外包公司
  • 重庆有哪些做网站 小程序的百度搜索引擎的特点
  • 仁怀哪里可以做网站自动秒收录网
  • 重庆市建设局网站推广软件一键发送
  • 合肥网络推广网络运营网站seo诊断分析和优化方案
  • 网站优化公司免费咨询sem优化推广
  • 个人做网站赚钱么宁波seo推荐推广平台
  • 员工支付做网站的费用分录成都营销型网站制作
  • 专业做网站的公司邢台专业做网站关键词搜索优化
  • 电商网站建设方案模板杭州百度首页优化
  • 网站建设服务价格东莞市网站建设
  • 网站开发所需要的的环境佛山网络推广哪里好
  • php网站的优点关键路径
  • 电子政务与网站建设 总结湖南网站推广
  • 境外网站做网站涉黄互联网媒体广告公司
  • 河南做网站公司汉狮怎么做蛋糕
  • 哈 做网站网店代运营收费
  • 制作网页的三大技术是什么郑州seo顾问
  • 网站建设报价流程行业网站网址
  • 提供邯郸做wap网站网页推广方案
  • 网站从域名广告营销公司
  • 网站链接的常见形式免费广告网
  • 微信微网站开发教程百度大数据平台
  • 网站服务设计引流推广是什么意思
  • 学校网站建设管理办法本周新闻热点事件