- 1、本文档共82页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
任务7-4 调用外部函数库:加入链接的函数库 注意:由于 Linux 默认是将函数库放置在 /lib 与 /usr/lib 当中,所以你没有写 -L/lib 与 -L/usr/lib 也没有关系。不过,万一哪天你使用的函数库并非放置在这两个目录下,那么 -L/path 就很重要了,否则会找不到函数库的。 任务7-4 调用外部函数库:加入链接的函数库 除了链接的函数库之外,你或许已经发现一个奇怪的地方,那就是在我们的 sin.c 当中第一行“ #include stdio.h”,这行说明的是要将一些定义数据由 stdio.h 这个文件读入,这包括 printf 的相关设置。这个文件其实是放置在 /usr/include/stdio.h 的。那么万一这个文件并非放置在这里呢?那么我们就可以使用下面的方式来定义要读取的 include 文件放置的目录。 [root@www ~]# gcc sin.c -lm -I/usr/include -I/path 后面接的路径(Path)就是设置要去寻找相关的 include 文件的目录。不过,同样,默认值是放置在 /usr/include 下面,除非你的 include 文件放置在其他路径,否则也可以略过这个选项。 任务7-5 gcc的简易用法(编译、参数与链接) 下面我们就列举几个 gcc 常见的参数。 # 仅将原始码编译成为目标文件,并不制作链接等功能 [root@www ~]# gcc -c hello.c # 会自动生成 hello.o 这个文件,但是并不会生成 binary 执行文件 ? # 在编译的时候,依据作业环境给予优化执行速度 [root@www ~]# gcc -O hello.c -c # 会自动生成 hello.o 这个文件,并且进行优化 ? 任务7-5 gcc的简易用法(编译、参数与链接) # 在进行 binary file 制作时,将链接的函数库与相关的路径填入 [root@www ~]# gcc sin.c -lm -L/usr/lib -I/usr/include # 在最终链接成 binary file 的时候这个命令较常执行 # -lm 指的是 libm.so 或 libm.a 这个函数库文件 # -L 后面接的路径是刚刚上面那个函数库的搜索目录 # -I 后面接的是源码内的 include 文件的所在目录 任务7-5 gcc的简易用法(编译、参数与链接) # 将编译的结果生成某个特定文件 [root@www ~]# gcc -o hello hello.c # -o 后面接的是要输出的 binary file文件名 ? # 在编译的时候,输出较多的信息说明 [root@www ~]# gcc -o hello hello.c -Wall # 加入 -Wall 之后,程序的编译会变得较为严谨一点,所以警告信息也会显示出来 任务7-6 使用 make 进行宏编译 1.为什么要用make 2.了解makefile 的基本语法与变量 子任务1 为什么要用make ① 先进行目标文件的编译,最终会有四个 *.o 的文件名出现。 [root@www ~]# gcc -c main.c [root@www ~]# gcc -c haha.c [root@www ~]# gcc -c sin_value.c [root@www ~]# gcc -c cos_value.c ② 再链接形成可执行文件main,并加入 libm 的数学函数,以生成 main 可执行文件。 [root@www ~]# gcc -o main main.o haha.o sin_value.o cos_value.o \ -lm -L/usr/lib -L/lib 子任务1 为什么要用make ③ 本程序的运行结果,必须输入姓名、360 度角的角度值来计算。 [root@www ~]# ./main Please input your name: Bobby ==这里先输入名字 Please enter the degree angle (ex 90): 30 ==输入以 360 度角为主的角度 Hi, Dear Bobby, nice to meet you. ==这三行为输出的结果 The Sin is: 0.50 The Cos is: 0.87 子任务1 为什么要用make 如果可以的话,能不能一个步骤就全部完成上面所有的操作呢?那就是利用 make 这个工具。先试着在这个目录下创建一个名为 makefile 的文件,代码如下。 # 先编辑 makef
文档评论(0)