您的位置:首页 > 其它

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

2012-02-21 23:17 253 查看
-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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: