Solaris10的CC编译器部分编译选项

-G : 生成动态共享库而不是可执行文件

       在有了这个选项的时候,必须指定链接时需要的库,编译器不会链接任何缺省的库

      (gcc下面对应的选项是-shared)

 

-g :指示编译器和链接程序准备程序以进行性能分析(以及调试)。

 

-I : 指定头文件搜索路径


-i : 通知链接程序ld忽略任何LD_LIBRARY_PATH设置


-instances=global :将全部所需的实例放置到当前目标文件中并赋予全局链接。


-KPIC/-Kpic :使用与位置无关的代码进行编译。

       生成共享库时使用该选项编译源文件。对全局数据的每个引用都生成为全局偏移表中

指针的非关联化。每个函数调用都通过过程链接表在pc相对地址模式中生成。

这个选项我怀疑不用的话还能算是动态链接库吗?

(gcc下面对应的选项是-fPIC)

 

-L : 查找共享对象的路径


-l : 指定动态链接的共享对象


警告

为了确保正确的库链接顺序,必须使用-mt(而不是-lthread)与libthread链接。


-misalign :SPARC:允许内存中包含未对齐数据,否则会生成错误。如以下代码所示:

char b[100];

int f(int * ar) {

return *(int *) (b +2) + *ar;

}

该选项通知编译器程序中的某些数据未正确对齐。因此,非常保守的装入和存储必须

用于会不对齐的任何数据,即每次一个字节。使用该选项会显著降低运行时性能。性

能降低的程度与应用程序有关。


–mt

编译和链接多线程代码。

该选项将-D_REENTRANT传递给预处理程序,并将-lthread以正确的顺序传递给ld。

如果应用程序或库是多线程的,则必须使用-mt选项。

为了确保正确的库链接顺序,必须使用该选项而不是-lthread来与libthread链接。

如果使用的是POSIX线程,则必须使用-mt -lpthread选项来链接。由于对于多线程应

用程序,libC(兼容模式)和libCrun(标准模式)需要libthread,因此必须使用-mt

选项。

如果在不同的步骤进行编译和链接并且使用-mt编译,则可能会得到意外的结果。如

果使用-mt编译一个转换单元,则应使用-mt编译该程序的所有单元。


–S

编译并仅生成汇编代码。

该选项使CC驱动程序编译程序并输出汇编源文件,但不汇编程序。汇编源文件名称的

后缀为.s。


–verbose=v[ ,v…]

控制编译器详细程度。

v必须是下列值之一。

表A–22 -verbose值

值含义

[no%]diags       [不]为每个编译传递打印命令行。

[no%]template    [不]打开模板实例verbose模式(有时称为“检验”模

式)。verbose模式显示编译过程中出现的每个实例阶段。

[no%]version     [不]指示CC驱动程序打印所调用程序的名称和版本号。

%all 调用以上所有内容。

%none -verbose=%none与

-verbose=no%template,no%diags,no%version相同。

缺省值

如果未指定–verbose,则假定–verbose=%none。
 

 

你可能感兴趣的:(Solaris10的CC编译器部分编译选项)