上面的说明很清楚了吧!不过,要注意的是,由于
Linux
预设是½函式库放置在
/lib
与
/lib64
当中,
所以你没有写
-L/lib
与
-L/lib64
也没有关系的!不过,万一哪天你使用的函式库并非放置在这两个
目录下,那么
-L/path
就很重要了!否则会找不到函式库喔!
除了连½的函式库之外,你或许已经发现一个奇怪的地方,那就是在我们的
sin.c
当中第一行
『
#include <stdio.h>
』,这行说的是要½一些定义数据由
stdio.h
这个文件读入,这包括
printf
的
相关设定。这个文件其实是放置在
/usr/include/stdio.h
的!那么万一这个文件并非放置在这里呢?那
么我们就可以使用底下的方式来定义出要读取的
include
文件放置的目录:
[root@study ~]#
gcc sin.c
-
lm
-
I/usr/include
-I/path
后面½的路径
( Path )
就是设定要去搜寻相关的
include
文件的目录啦!不过,同样的,默认值
是放置在
/usr/include
底下,除非你的
include
文件放置在其他路径,否则也可以略过这个项目!
透过上面的几个小范例,你应该对于
gcc
以及原始码有一定程度的认识了,再½下来,我们来稍微
整理一下
gcc
的简易使用方法吧!
21.2.4 gcc
的简易用法
(
编译、参数与链½
)
前面说过,
gcc
为
Linux
上面最标准的编译程序,这个
gcc
是由
GNU
计划
所维护的,有兴趣的朋
友请自行前往参考。既然
gcc
对于
Linux
上的
Open source
是这么样的重要,所以底下我们就列举
几个
gcc
常见的参数,如此一来大家应该更容易了½原始码的各项功能吧!
#
½½
原始
码编译
成
为
目
标
文件,并不制作
链
½等功能:
[root@study ~]#
gcc
-
c hello.c
#
会
自
动
的
产
生
hello.o
这个
文件
,但是并不
会产
生
binary
执
行
档
。
#
在
编译
的
时
候,依据作
业环
境
给
予优化
执
行速度
[root@study ~]#
gcc
-
O
hello.c
-
c
#
会
自
动
的
产
生
hello.o
这个
文件
,并且
½
行优化喔!
#
在
½
行
binary file
制作
时
,
½连½
的函式
库
与相
关
的路
径
填入
[root@study ~]#
gcc sin.c
-
lm
-
L/lib
-
I/usr/include
#
这个
指令
½
常下
达
在最
终连½
成
binary file
的
时
候,
#
-
lm
指的是
libm.so
或
libm.a
这个
函式
库
文件
;
#
-
L
后面½的路
径
是
刚刚
上面那
个
函式
库
的搜
寻
目
录
;
#
-
I
后面½的是原始
码内
的
include
文件
之所在目
录
。
#
½编译
的
½
果
输
出成某
个
特定
档
名
[root@study ~]#
gcc
-
o hello hello.c
#
-
o
后面½的是要
输
出的
binary file
檔名
#
在
编译
的
时
候,
输
出
½
多的
讯
息
说
明