,
On attempting to
build Octave 2.9.5 on a RedHat/Fedora Core 4 Linux system I encountered the
following errors.
<makeOutput>
g++ -I. -I..
-I../liboctave -I../src -I../libcruft/misc -DHAVE_CONFIG_H -mieee-fp -Wall
-W -Wshadow -g -O2 -rdynamic \
-L.. -fPIC -o octave
\
main.o \
-L../liboctave -L../libcruft -L../src -Wl,-rpath
-Wl,/usr/local/lib/octave-2.9.5 \
-loctinterp -loctave
-lcruft \
\
\
-lreadline -lncurses -ldl -lz -lm
-L/usr/lib/gcc-lib/i386-redhat-linux/3.2.3
-L/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/../../.. -lz -lfrtbegin -lg2c -lm
-lgcc_s
../src/liboctinterp.so: undefined reference to
`__gnu_cxx::__exchange_and_add(int volatile*, int)'
../src/liboctinterp.so:
undefined reference to
`std::_Rb_tree_decrement(std::_Rb_tree_node_base*)'
../src/liboctinterp.so:
undefined reference to `__cxa_get_exception_ptr'
../src/liboctinterp.so:
undefined reference to `std::_Rb_tree_increment(std::_Rb_tree_node_base
const*)'
../src/liboctinterp.so: undefined reference to
`std::basic_stringbuf<char, std::char_traits<char>,
std::allocator<char> >::seekoff(long long, std::_Ios_Seekdir,
std::_Ios_Openmode)'
../src/liboctinterp.so: undefined reference to
`std::_List_node_base::unhook()'
../src/liboctinterp.so: undefined reference
to
`std::_List_node_base::hook(std::_List_node_base*)'
../src/liboctinterp.so:
undefined reference to `std::basic_string<char, std::char_traits<char>,
std::allocator<char>
>::_Rep::_S_empty_rep_storage'
../src/liboctinterp.so: undefined reference
to `std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*,
std::_Rb_tree_node_base*,
std::_Rb_tree_node_base&)'
../src/liboctinterp.so: undefined reference to
`std::basic_istream<char, std::char_traits<char> >::seekg(long long,
std::_Ios_Seekdir)'
../src/liboctinterp.so: undefined reference to
`std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*,
std::_Rb_tree_node_base&)'
../src/liboctinterp.so: undefined reference to
`__cxa_guard_release'
../src/liboctinterp.so: undefined reference to
`std::basic_string<char, std::char_traits<char>,
std::allocator<char> >::_M_replace_aux(unsigned int, unsigned int,
unsigned int, char)'
../src/liboctinterp.so: undefined reference to
`__cxa_guard_abort'
../src/liboctinterp.so: undefined reference to
`std::_Rb_tree_increment(std::_Rb_tree_node_base*)'
../src/liboctinterp.so:
undefined reference to `std::basic_stringbuf<char,
std::char_traits<char>, std::allocator<char>
>::showmanyc()'
../src/liboctinterp.so: undefined reference to
`std::basic_string<char, std::char_traits<char>,
std::allocator<char> >::_Rep::_S_create(unsigned int, unsigned int,
std::allocator<char> const&)'
../src/liboctinterp.so: undefined
reference to `__cxa_guard_acquire'
collect2: ld returned 1 exit
status
make[2]: *** [octave] Error 1
</makeOutput>
My web search
indicates __cxa_guard_* is a compiler generated call related to sequencing
static construction, but I was not able to find out much about
it.
uname -a
reports:
Linux cmr8.cmr.mech.unsw.edu.au
2.6.11-1.1369_FC4smp #1 SMP Thu Jun 2 23:08:39 EDT 2005 i686 i686 i386
GNU/Linux
I tried gcc 4.0.0
and 4.1.0 with the same result.
Building Octave
2.1.73 resulted in even more errors, mostly referring to
__cxa_guard_*.
Thanks for your
help
Stephen
Webb