странная проблема при попытке создать общий объект в солярисе i86 - PullRequest
0 голосов
/ 09 июня 2011

Я пытаюсь создать общий файл .so файла в солярисе. Вот следующие шаги, которые я делаю ...

  1. У меня есть исходники кода ... если мы пытаемсяпостроить, что он будет генерировать исполняемый файл .. ниже приведена команда для создания этого
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/sfw/lib
  1. Теперь я пытаюсь создать общий объект, используя тот же поток изменил команду немногокак это
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

ниже - проблема после выполнения над строкой ..

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

Ответы [ 2 ]

1 голос
/ 11 августа 2011

Если gcc использует /usr/ccs/bin/ld, тогда замените -shared на -G

0 голосов
/ 11 августа 2011

Необходимо построить общие объекты position-independent, поэтому вы хотите добавить флаг -fPIC к вызову GCC.

...