-O0
-O1
-O2
-O3
-include用来包含头文件,但一般情况下包含头文件都在源码里用#include
说明:
放在/lib和/usr/lib和/usr/local/lib里的库直接用-l参数就能链接了,但如果库文件没放在这三个目录里,
常用的X11的库,它放在/usr/X11R6/lib目录下,我们编译时就要用-L/usr/X11R6/lib
.3设定程式库档案。
说明:
-l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?
好了现在我们知道怎么得到库名了,比如我们自已要用到一个第三方提供的库名字叫libtest.so,那么我们
另外,大部分libxxxx.so只是一个链接,以RH9为例,比如libm.so它链接到/lib/libm.so.x,/lib/libm.so.6
仅编译成
3.
4.
-D定义宏有两种情况,一种是-DMACRO
如:
上面为hello.c定义了一个DEBUG宏,某些情况下使用-D
#ifdefine
printf("debug
#endif
对于这段代码,平时调试的时候就加上-DDEBUG
与之对应的是-UMACRO参数,相当于#undef
此选项以stabs格式声称调试信息,但是不包括gdb调试信息.
-gstabs+
-Wa,option
此选项传递option给汇编程序;如果option中间有逗号,就将option分成多个选项,然后传递给会汇编程序
-Wl.option
使用方法跟本地的gcc差不多,但有一点特殊的是:必须用-L和-I参数指定编译器用sparc系统的库和头文件,不能用本地(X86)
例子:
PKG_CONFIG_PATH:用来指定pkg-config用到的pc文件的路径,默认是/usr/lib/pkgconfig,pc文件是文本文件,扩展名是
.pc,里面定义开发包的安装路径,Libs参数和Cflags参数等等。
CC:用来指定c编译器。
CXX:用来指定cxx编译器。
LIBS:跟上面的--libs作用差不多。
CFLAGS:跟上面的--cflags作用差不多。
CC,CXX,LIBS,CFLAGS手动编译时一般用不上,在做configure时有时用到,一般情况下不用管。
环境变量设定方法:export
首先这是链接错误,不是编译错误,也就是说如果只有这个错误,说明你的程序源码本身没有问题,是你
用编译器编译时参数用得不对,你没有指定链接程序要用到得库,比如你的程序里用到了一些数学函数,
那么你就要在编译参数里指定程序要链接数学库,方法是在编译命令行里加入-lm。
typedef
int
char
}STR;
int
struct
data=0;
}
上面已经使用typdef