我正在尝试在solaris中创建一个共享对象.so文件,这些是我正在做的以下步骤...
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
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
答案 0 :(得分:1)
如果gcc
使用/usr/ccs/bin/ld
,则将-shared
替换为-G
答案 1 :(得分:0)
共享对象需要构建position-independent
,因此您希望将-fPIC
标志添加到GCC调用中。