首页 > +z +Z compiler flag for HP

+z +Z compiler flag for HP

1.      今天遇到一问题,在sles11/vxworks下编译通过,但是在hpux下失败

2.      编译错误:

/usr/ccs/bin/ld:DP relative code in file /projects/xxx/DERIVED/tfa_pa32-hpux.a(tfa02_pa32-hpux.o) -shared library must be position

    independent.  Use +z or +Z to recompile.

3.    修改makefile,添加+z选项

ifeq($(BLD_TARGET_ARCH),pa32-hpux)

TS_LOGLIB_OPTS.o+= +z

endif

4.    重新编译

5.    报新的错误如下:

/usr/ccs/bin/ld:Data Linkage Table (+z) overflow in file /projects/xxx/loglib_pa32-hpux-mt.a(a7ts_log_pa32-hpux-mt.o)- use +Z option to recompile

   Reference from:  /projects/xxx/loglib_pa32-hpux-mt.a(a7ts_log_pa32-hpux-mt.o)(0x604)

6.    查询+z 和 +Z 的区别,如下:

+z,+Z Both ofthese options cause the compiler to generate position independent code(PIC) for use in building shared libraries. +Z is the default in 64-bitmode. The -G and -p options are ignored if +z or +Z is used. Normally,+z should be used to generate PIC; however, when certain limits areexceeded, +Z is required to generate PIC. The ld linker issues theerror indicating when +Z is required. If both +z and +Z are 

specified, only the last one encountered applies. For a more completediscussion regarding PIC and these 

options, see HP-UX Linker and Libraries Online User's Guide and the manualProgramming on HP-UX.  

7.      修改makefile,添加+Z选项:

ifeq($(BLD_TARGET_ARCH),pa32-hpux)

TS_LOGLIB_OPTS.o+= +Z

endif

8.    编译通过。

9.    结论:

9.1  +z/+Z 相当于gcc 中的-fPIC;

(The '+Z' refers to *compiler* flag for HP cc/CC, which isequivalent to '-fPIC' for gcc.)

9.2  +z +Z有区别;

9.3  这个选项是编译(compile)选项,而不是链接(ld)选项;



更多相关:

  • We have ZZIPlib installed.My command configure line looks like :./configure ?with-apxs ?with-curl ?with-curl-dir=/usr/local/lib ?with-gd ?with-gd-dir=/usr/local ?with-g...

  • asar Whether to package the application’s source code into an archive, using Electron’s archive format. Defaults to true. Node modules, that must be unpacked, will be d...

  •         最近买个了小本lenovo x100e,结果发现这小本没有大小写指示灯,在windows用也无妨,不过我常常用这本在ubuntu中调试linux代码,vi 常用的编辑器,熟悉的都知道,大小写很关键的,用google搜了一下,发现可以用如下方法解决:        1.  “sudo apt-get install l...

  •   修改Ubuntu的启动logo 原文链接: https://my.oschina.net/jmjoy/blog/380262     内容:   Plymouth splash screen is the initial splash screen at boot-up.Ubuntu 10.04 uses Plym...

  • PCL1.9.1并没有支持vs2015版本的exe版本,然后需要下载PCL的源码重新自己CMake编译出vs2015版本的编译的目的:1、得到支持vs2015的版本的PCL1.9.1 前期准备1、下载PCL源码:https://github.com/PointCloudLibrary/pcl2、下载安装版(主要是为...

  • 下载gcc文档,第三章有详细的build options的介绍。 最近我用到2个关键的option 来定位问题,简单介绍一下: 1. -E: 只是进行预编译,不会编译和link。用于检查宏在代码中的展开是否符合预期; 2.--verbose: 开启verbose mode, 用于输出编译整个过程中的详细信息,可帮助查看build...

  • 浅谈GCC预编译头技术 文/jorge ——谨以此文,悼念我等待MinGW编译时逝去的那些时间。 其 实刚开始编程的时候,我是丝毫不重视编译速度之类的问题的,原因很简单,因为那时我用BASICA。后来一直用到C++ Builder,尽管Borland的广告无时无刻不在吹嘘其编译速度,我却从没有对这个问题上心过,因为心里根本没有“...

  • 在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Architecture)、操作系统(Operating System)。同一个体系结构可以运行...

  • 文章目录前言Makefile 编译流程1. 平台变量/环境变量的初始化。2. 编译需要的源码文件变量初始化。3. include 目录的设置。4. 编译的执行逻辑。问题记录1:可能的打包命令`ar` 失效问题5. 执行具体的编译指令问题记录2: jar 包编译...

  • 头文件:/usr/include/getopt.h 函数传入较长参数 函数getopt_long_only和getopt_long两者用法差不多,都可以用来解析命令行选项 函数出处 #include //getopt_long()头文件位置 int getopt_long (int ___argc,...

  • 代码: [MenuItem("Tools/Test",false,1)]    static void Test()    {        Debug.Log("test");      } 注意:MenuItem中第一个参数:需要创建选项在工具栏中的路径,此路径的父目录可以是Unity中已存在的,也可以自己直接同子目录一起创建,例...