(实验5Linux编程环境gcc与make.docVIP

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验五:Linux编程环境 gcc与make 实验目的 通过实验掌握Linux中的gcc 和 make 实验设备 硬件:PC机一台 软件:Windows98/XP/2000系统,VMware Workstation6.0,Red Hat Linux 实验内容 Linux命令gcc和make 实验预习要求 仔细阅读参考书: 【1】鸟哥的Linux私房菜 基础学习篇 第三版,人民邮电出版社,鸟哥 【2】嵌入式Linux系统开发标准教程,人民邮电出版社,华清远见嵌入式培训中心 【3】嵌入式Linux应用程序开发标准教程,人民邮电出版社,华清远见嵌入式培训中心 关于Linux编程环境部分。 实验步骤 (1)熟悉Red Hat Enterprise Linux系统。 (2)根据实验重点内容测试。 实验重点: gcc的用法 (1)简单的示例程序 示例程序 hello.c 见 gcc example-hello 在默认的状态下,如果直接以 gcc 编译源代码,并且没有加上任何参数,则执行文件的文件名会被自动设置为 a.out 这个文件名! 所以能够直接执行 ./a.out 这个可执行文件!如果想要产生目标文件 (object file) 来进行其他的操作,而且可执行文件的文件名也不要用默认的 a.out ,步骤: [root@www ~]# gcc -c hello.c [root@www ~]# ll hello* -rw-r--r-- 1 root root 72 Jun 5 02:40 hello.c -rw-r--r-- 1 root root 868 Jun 5 02:44 hello.o ==就是被生成的目标文件 [root@www ~]# gcc -o hello hello.o [root@www ~]# ll hello* -rwxr-xr-x 1 root root 4725 Jun 5 02:47 hello ==这就是可执行文件!-o 的结果 -rw-r--r-- 1 root root 72 Jun 5 02:40 hello.c -rw-r--r-- 1 root root 868 Jun 5 02:44 hello.o [root@www ~]# ./hello Hello World 这个步骤主要是利用 hello.o 这个目标文件生成出一个名为 hello 的可执行文件。我们可以得到 hello 及 hello.o 两个文件, 真正可以执行的是 hello 这个二进制文件。 为什么要先制作目标文件再做成可执行文件呢? (2)主、子程序链接:子程序的编译 如果我们在一个主程序里面又调用了另一个子程序呢?这是很常见的一个程序写法,因为可以简化整个程序的易读性!在如下的例子当中,我们以 thanks.c 这个主程序去调用 thanks2.c 这个子程序,见程序gcc-example-thanks # 开始将源代码编译成为可执行的 二进制文件 : [root@www ~]# gcc -c thanks.c thanks2.c [root@www ~]# ll thanks* -rw-r--r-- 1 root root 76 Jun 5 16:13 thanks2.c -rw-r--r-- 1 root root 856 Jun 5 16:13 thanks_2.o ==编译产生的! -rw-r--r-- 1 root root 92 Jun 5 16:11 thanks.c -rw-r--r-- 1 root root 908 Jun 5 16:13 thanks.o ==编译产生的! [root@www ~]# gcc -o thanks thanks.o thanks_2.o #最终结果会产生thanks #执行一下这个文件: [root@www ~]# ./thanks Hello World Thank you! 为什么要制作出目标文件?由于我们的源代码文件有时并非仅只有一个文件,所以我们无法直接进行编译。 这个时候就需要先产生目标文件,然后再以链接制作成为 binary 可执行文件。另外,如果更新了 thanks2.c 这个文件的内容,则只要重新编译 thanks2.c 来产生新的 thanks2.o ,然后再以链接制作出新的 binary 可执行文件即可!而不必重新编译其他没有更改过的源代码文件。 这对于软件开发者来说,这是一个很重要的功能,因为有时候要将很大的源代码全部编译完成,会花很长的一段时间! (3)调用外部函数库:加入链接的函数库 示例程序中使用了三角函数库中的sin()方法。见程序gcc-example-sin 直接使用gcc sin.c 会

文档评论(0)

junjun37473 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档