,
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_*.