在Solaris上与Developer Studio 12.5链接

时间:2016-10-05 14:22:22

标签: c++ linker solaris solaris-studio

我在使用Developer Studio 12.5在Solaris 11.3上进行链接时遇到了一些问题。

代码似乎编译正常,但在链接阶段失败:

/* Extract Pages to Folder */

var re = /.*\/|\.pdf$/ig;

var filename = this.path.replace(re,"");
var lastPage=this.numPages-1;
{
    for ( var i = 0;  i < this.numPages; i++ ) 
    this.extractPages
     ({
        nStart: i,
        nEnd: lastPage,
        cPath : filename + "_page_" + (i+1) + ".pdf"
    });
};

如果我删除&#39; -z defs&#39;从命令行(链接选项),它将链接正常。跑步&#39; ldd libBlah.so&#39;没有显示任何缺失的参考文献。

一位同事用过&#;;&#39;找到符号,这些符号只能在静态libCrun库中找到(不是共享库):

CC  -o bin/libBlah.so -mt -G -z defs -fast -s -KPIC -xarch=generic \
-M mapfiles/solaris.map -library=stlport4 -staticlib=stlport4  \
<my .o files> <some boost .a libs> <openssl .a libs> \
-lCrun -lsocket -lnsl -lposix4 -lc -lm -lw -ldl

Undefined                       first referenced
symbol                             in file
void __Crun::ex_end_init()        obj/Blah.o
void __Crun::ex_start_init()      obj/Blah.o
ld: fatal: symbol referencing errors
gmake: *** [bin/libBlah.so] Error 2

本手册建议使用&#39; -zdefs&#39;指出我们之前做过的丢失符号(makefile已经有了那个标志),所以,我无法解释我所看到的内容。

问题很简单:我应该对此做些什么,我应该怎么做呢?

0 个答案:

没有答案