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

网站维护推广国外室内设计网站大全

网站维护推广,国外室内设计网站大全,网站如何推广营销,开发公司起名大全buntu下C编程#xff0c;编译基础 C 编程中相关文件后缀 .a静态库 (archive).cC源代码#xff08;需要编译预处理#xff09;.hC源代码头文件.iC源代码#xff08;不需编译预处理#xff09;.o对象文件.s汇编语言代码.so动态库单个源文件生成可执行程序 下面是一个简单的… buntu下C编程编译基础     C 编程中相关文件后缀 .a静态库 (archive).cC源代码需要编译预处理.hC源代码头文件.iC源代码不需编译预处理.o对象文件.s汇编语言代码.so动态库单个源文件生成可执行程序 下面是一个简单的“hello, ubuntu”程序的源代码 /* helloubuntu.c */#include stdio.hint main(int argc,char *argv[]){ printf(“hello, ubuntu\n”);  return 0;} 最简单直接的编译该代码为可执行程序的方法是将该代码保存为文件 helloubuntu.c并执行以下命令 $ gcc -Wall helloubuntu.c 编译器通过检查命令行中指定的文件的后缀名可识别其为 C 源代码文件。GCC 默认的动作编译源代码文件生成对象文件(object file)链接对象文件得到可执行程序删除对象文件。由于命令行中未指定可执行程序的文件名编译器采用默认的 a.out。在命令行中输入程序名可使其执行并显示结果 $ ./a.outhello, ubuntu 选项 -o 用来指定所生成的可执行程序的文件名。下面的命令生成名为 helloubuntu 的可执行程序 $ gcc -Wall helloubuntu.c -o helloubuntu 在命令行中输入程序名将使其执行如下 $ ./helloubuntuhello, ubuntu 源文件生成对象文件 选项 -c 指示 GCC 编译源代码文件但将对象文件保留在磁盘中并跳过链接对象文件生成可执行文件这一步。在这种情况下默认的输出文件的文件名同源代码文件名一致只不过后缀换为 .o 。例如下面的命令将生成名为 helloubuntu.o 的对象文件T $ gcc -c -Wall helloubuntu.c 选项 -o 可用来指定生成的对象文件的文件名。以下命令将产生名为kubuntu.o的对象文件 $ gcc -c -Wall helloubuntu.c -o kubuntu.o 当构建对象库或者生成一系列对象文件以备稍后链接用时一条命令即可从多个源码文件生成对应的对象文件。下面的命令将生成对象文件ubuntu.o, kubuntu.o 与 xubuntu.o $ gcc -c -Wall ubuntu.c kubuntu.c xubuntu.c 多个源文件生成可执行程序 即使多个源码文件被编译GCC编译器也会自动进行链接操作。例如下面的代码保存在名为 hellomain.c 的文件中并调用一个名为 sayhello()的函数 /* hellomain.c */void sayhello(void);int main(int argc,char *argv[]){ sayhello(); return 0;} 以下代码保存在名为 sayhello.c 的文件中并定义了 sayhello() 函数 /* sayhello.c */#include stdio.hvoid sayhello(){ printf(“hello, ubuntu\n”);} 下面的命令将两个文件分别编译为对象文件且将其链接为可执行程序 hello并删除对象文件 $ gcc -Wall hellomain.c sayhello.c -o hello 编译预处理 选项 -E 指示编译器只进行编译预处理。下面的命令将预处理源码文件 helloubuntu.c 并将结果在标准输出中列出 $ gcc -E helloubuntu.c 选项 -o 用来将预处理过的代码定向到一个文件。像本文一开始给出的后缀列表所给出的不需经过预处理的C源码文件保存为后缀为 .i的文件中这种文件可以这样来获得 $ gcc -E helloubuntu.c -o helloubuntu.i 生成汇编代码 选项 -S 指示编译器生成汇编语言代码然后结束。下面的命令将由 C 源码文件 helloubuntu.c 生成汇编语言文件 helloubuntu.s $ gcc -S helloubuntu.c 汇编语言的形式依赖于编译器的目标平台。如果多个源码文件被编译每个文件将分别产生对应的汇编代码模块。 创建静态库 静态库是编译器生成的普通的 .o 文件的集合。链接一个程序时用库中的对象文件还是目录中的对象文件都是一样的。静态库的另一个名字叫归档文件(archive)管理这种归档文件的工具叫 ar 。 要构建一个库首先要编译出库中需要的对象模块。例如下面的两个源码文件为 hellofirst.c 和 hellosecond.c /* hellofirst.c */#include stdio.hvoid hellofirst(){ printf(“The first hello\n”);}/* hellosecond.c */#include stdio.hvoid hellosecond(){ printf(“The second hello\n”);} 这两个源码文件可以用以下命令编译成对象文件 $ gcc -c -Wall hellofirst.c hellosecond.c 程序 ar 配合参数 -r 可以创建一个新库并将对象文件插入。如果库不存在的话参数 -r 将创建一个新的并将对象模块添加如有必要通过替换到归档文件中。下面的命令将创建一个包含本例中两个对象模块的名为 libhello.a 的静态库 $ ar -r libhello.a hellofirst.o hellosecond.o 现在库已经构建完成可以使用了。下面的程序 twohellos.c 将调用该库中的这两个函数 /* twohellos.c */void hellofirst(void);void hellosecond(void);int main(int argc,char *argv[]){ hellofirst(); hellosecond(); return 0;} 程序 twohellos 可以通过在命令行中指定库用一条命令来编译和链接命令如下 $ gcc -Wall twohellos.c libhello.a -o twohellos 静态库的命名惯例是名字以三个字母 lib 开头并以后缀 .a 结束。所有的系统库都采用这种命名惯例并且它允许通过 -l(ell) 选项来简写命令行中的库名。下面的命令与先前命令的区别仅在于 gcc 期望的找寻该库的位置不同 $ gcc -Wall twohellos.c -lhello -o twohellos 指定完整的路径名可使编译器在给定的目录中寻找库。库名可以指定为绝对路径比如 /usr/worklibs/libhello.a或者相对与当前目录的路径比如 ./lib/libhello.a。选项 -l 不能具有指定路径的能力但是它要求编译器在系统库目录下找寻该库。 创建共享库 共享库是编译器以一种特殊的方式生成的对象文件的集合。对象文件模块中所有地址变量引用或函数调用都是相对而不是绝对的这使得共享模块可以在程序的运行过程中被动态地调用和执行。 要构建一个共享库首先要编译出库中需要的对象模块。例如下面是文件名为 shellofirst.c 和 shellosecond.c 的两个源码文件 /* shellofirst.c */#include stdio.hvoid shellofirst(){ printf(“The first hello from a shared library\n”);}/* shellosecond.c */#include stdio.hvoid shellosecond(){ printf(“The second hello from a shared library\n”);} 要将以上两个源码文件编译成对象文件可以用下面的命令 $ gcc -c -Wall -fpic shellofirst.c shellosecond.c 选项 -c 告诉编译器只生成 .o 的对象文件。选项 -fpic 使生成的对象模块采用浮动的可重定位的地址。缩微词 pic 代表“位置无关代码”position independent code。 下面的 gcc 命令将对象文件构建成一个名为 hello.so 的共享库 $ gcc -Wall -shared shellofirst.o shellosecond.o -o hello.so 选项 -o 用来为输出文件命名而文件后缀名 .so 告诉编译器将对象文件链接成一个共享库。通常情况下链接器定位并使用 main() 函数作为程序的入口但是本例中输出模块中没有这种入口点为抑制错误选项 -shared 是必须的。 编译器能将后缀为 .c 的文件识别为 C 语言源代码文件并知道如何将其编译成为对象文件。基于这一点先前的两条命令我们可以合并为一条;下面的命令直接将模块编译并存储为共享库 $ gcc -Wall -fpic -shared shellofirst.c shellosecond.c -o hello.so 下面的程序存储在文件 stwohellos.c 内是调用共享库中两个函数的主程序 /* stwohellos.c */void shellofirst(void);void shellosecond(void);int main(int argc,char *argv[]){ shellofirst(); shellosecond(); return 0;} 该程序可以用下面的命令编译并链接共享库 $ gcc -Wall stwohellos.c hello.so -o stwohellos 程序 stwohello 已经完成但要运行它必须让其能定位到共享库 hello.so因为库中的函数要在程序运行时被加载。 超越命名惯例 如果环境要求你使用 .c 以外的后缀名来命名你的 C 源码文件你可以通过 -x 选项来指定其对应的语言以忽略我们的命名规范。例如下面的命令将从文件 helloworrld.jxj 编译 C 语言源代码并生成可执行文件 helloubuntu $ gcc -xc helloubuntu.jxj -o helloubuntu 通常在没有 -x 选项的情况下任何具有未知后缀名的源码文件名都被认为是连接器可以识别的选项并在不做任何更改的情况下传递给链接器。选项 -x 对其后的所有未知后缀的文件都起作用。例如下面的命令使 gcc 将 align.zzz 和 types.xxx 都作为 C 源码文件来处理 $ gcc -c -xc align.zzz types.xxx 转载于:https://www.cnblogs.com/yaopan007/p/3481891.html
http://www.zqtcl.cn/news/755151/

相关文章:

  • 高端网站建设费用情况广州开发区控股集团有限公司
  • 精湛的网站设计云南网招聘
  • 南昌网站建设公司行情Wordpress添加分页按钮
  • 论坛网站建设流程wordpress速度优化插件
  • PHP套模板做网站建设银行保定分行网站
  • 怎样免费注册网站域名wordpress网站回调域
  • 东莞个人免费建网站乐清网约车事件
  • 备案查询网站网站的登录弹窗怎么做
  • 网站开发 mvc北京建设工程主管部门网站
  • 淮安建设机械网站制作代理公司注册需要多少钱
  • 站长收录茌平建设局网站
  • 如何进行网站开发开发区人才
  • 网站制作 视频网站维护的主要内容包括
  • 快速企业建站深圳网站关键词优化推广
  • 如何开网店详细步骤东莞市网络seo推广
  • 个人可以做哪些有意思的网站网站和网站的app
  • 北京高端网站开发公司网站建设后台实训体会
  • 青岛海川建设集团有限公司网站wordpress 变私有云
  • 网站备案人可以改吗石大网页设计与网站建设客观题
  • 宁波网站优化方案免费关键词挖掘工具
  • 网站制作想法免费做效果图网站
  • 晓风彩票网站建设软件微信上发的链接网站怎么做的
  • 关键词有哪几种台州优秀关键词优化
  • 盐田区住房和建设局网站软件开发文档怎么编写
  • 网站响应式建设seo排名优化怎样
  • 山东 网站备案德清县建设局网站
  • 中英语双语网站咋做提供网站建设设计外包
  • 云网站功能江门网站seo关键词排名优化
  • 潍坊网站建设外贸制作html网站
  • 网站友情链接怎么添加定制酒营销方案