开发者

strange problem while trying to create a shared object in solaris i86

I am trying to create a shared object .so file in solaris these are the below steps which i am doing...

  1. I have a source code jags... if we try to build that it will generate an executable file.. below is the command to create that
g++ -g -O2 -o .libs/jags-terminal jags_terminal-parser.o jags_terminal-scanner.o jags_terminal-ReadData.o .libs/jags-terminalS.o  /JAGS-2.2.0/libltdl/./.libs/dlopen.a ../../libltdl/.libs/libltdlc.a ../../src/lib/.libs/libjags.so -L/usr/sfw/lib /usr/sfw/lib/libstdc++.so -lgcc_s -lm -Wl,-R -Wl,/usr/local/lib -Wl,-R -Wl,/usr/sf开发者_StackOverflow社区w/lib
  1. Now i am trying to create a shared object using same flow changed the command a little bit like this
g++ -shared -o .libs/libjagsterminal.so jags_terminal-parser.o jags_terminal-scanner.o jags_terminal-ReadData.o .libs/jags-terminalS.o  /JAGS-2.2.0/libltdl/./.libs/dlopen.a ../../libltdl/.libs/libltdlc.a ../../src/lib/.libs/libjags.so -L/usr/sfw/lib /usr/sfw/lib/libstdc++.so -lgcc_s -lm -Wl,-R -Wl,/usr/local/lib -Wl,-R -Wl,/usr/sfw/lib

below is the the problem after executiing above line..

std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)0x3ea      jags_terminal-ReadData.o
_Unwind_Resume                      0x4f9       jags_terminal-parser.o
_Unwind_Resume                      0x61f       jags_terminal-parser.o
_Unwind_Resume                      0xae7       jags_terminal-parser.o
_Unwind_Resume                      0xc0d       jags_terminal-parser.o
_Unwind_Resume                      0xe5f       jags_terminal-parser.o
_Unwind_Resume                      0xf7f       jags_terminal-parser.o
_Unwind_Resume                      0x10cf      jags_terminal-parser.o
_Unwind_Resume                      0x1371      jags_terminal-parser.o
_Unwind_Resume                      0x1a9b      jags_terminal-parser.o
_Unwind_Resume                      0x24f0      jags_terminal-parser.o
_Unwind_Resume                      0x2a95      jags_terminal-parser.o
_Unwind_Resume                      0x341a      jags_terminal-parser.o
_Unwind_Resume                      0x377a      jags_terminal-parser.o
_Unwind_Resume                      0x579c      jags_terminal-parser.o
_Unwind_Resume                      0x7021      jags_terminal-parser.o
_Unwind_Resume                      0x7417      jags_terminal-parser.o
_Unwind_Resume                      0x1169      jags_terminal-scanner.o
_Unwind_Resume                      0x17e0      jags_terminal-scanner.o
_Unwind_Resume                      0x685       jags_terminal-ReadData.o
_Unwind_Resume                      0x68e       jags_terminal-ReadData.o
_Unwind_Resume                      0x47        jags_terminal-parser.o
_Unwind_Resume                      0x79        jags_terminal-parser.o
_Unwind_Resume                      0x60        jags_terminal-parser.o
_Unwind_Resume                      0xd3        jags_terminal-parser.o
_Unwind_Resume                      0x33a       jags_terminal-parser.o
_Unwind_Resume                      0x3bc       jags_terminal-parser.o
_Unwind_Resume                      0x1dd       jags_terminal-parser.o
_Unwind_Resume                      0x299       jags_terminal-parser.o
_Unwind_Resume                      0x179       jags_terminal-parser.o
_Unwind_Resume                      0x87        jags_terminal-parser.o
_Unwind_Resume                      0x145       jags_terminal-parser.o
_Unwind_Resume                      0xb4        jags_terminal-ReadData.o
ld: fatal: relocations remain against allocatable but non-writable sections
collect2: ld returned 1 exit status


If gcc uses /usr/ccs/bin/ld then replace -shared with -G


Shared objects need to be build position-independent, so you want to add the -fPIC flag to GCC invocation.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜