Hi all,
I want to run a graph matching algo on a weighted graph having approx
2000
nodes and 1 million edges . When i run this on a 32-bit Linux machine
,it
says --> virtual memory exhausted. So i thought of moving to 64-bit
sparc
machine.
I downloaded LEDA-4.5-complete-sparc-solaris-CC-5.5-64-std-eval
package.
This package has all libraries as archive(.a) files. While compiling a
graph matching application i m encountering the following error
messages.->
bash-2.03$ g++ -I$LEDAROOT/incl -L$LEDAROOT graph_matching.cpp -lG -lL
-lm
Undefined first referenced
symbol in file
leda::graph::graph[in-charge]() /var/tmp//ccWhqssR.o
leda::memory_manager::allocate_block(unsigned,
int)/var/tmp//ccWhqssR.o
leda::graph::~graph [in-charge]() /var/tmp//ccWhqssR.o
leda::graph::new_edge(leda::node_struct*, leda::node_struct*,
void*)/var/tmp//ccWhqssR.o
leda::memory_manager::deallocate_bytes(void*,
unsigned)/var/tmp//ccWhqssR.o
leda::dlist::del(leda::dlink*) /var/tmp//ccWhqssR.o
leda::std_memory_mgr /var/tmp//ccWhqssR.o
leda::std_error_handler /var/tmp//ccWhqssR.o
leda::memory_manager::allocate_bytes(unsigned)/var/tmp//ccWhqssR.o
leda::dlist::clear() /var/tmp//ccWhqssR.o
leda::graph::new_node(void*, leda::node_struct*,
int)/var/tmp//ccWhqssR.o
leda::MAX_WEIGHT_MATCHING(leda::graph const&, leda::edge_array<int,
leda::graph> const&,
bool, int)/var/tmp//ccWhqssR.o
leda::graph::print_edge(leda::edge_struct*, std::basic_ostream<char,
std::char_traits<char> >&)
const/var/tmp//ccWhqssR.o
leda::memory_manager::deallocate_vector(void*) /var/tmp//ccWhqssR.o
leda::memory_manager_init::memory_manager_init[in-charge]()/var/tmp//ccWhqssR.o
leda::memory_manager::allocate_vector(unsigned)/var/tmp//ccWhqssR.o
leda::memory_manager_init::~memory_manager_init
[in-charge]()/var/tmp//ccWhqssR.o
ld: fatal: Symbol referencing errors. No output written to a.out
collect2: ld returned 1 exit status
I set the LEDAROOT variable properly and also copied all .a files in
/usr/lib , /usr/ccs/lib/ , /usr/local/lib/ etc. and also set
LD_LIBRARY_PATH pointing to all these dirs, but still linking is
failing.
Then i thought, it may be because Solaris might need shared
libraries..
so to convert all archives(.a) to .so files there is a make file
provided
by LEDA ..that is shared.mk
bash-2.03$ cat shared.mk
..SUFFIXES: $(so) .a
..a$(so):
@[EMAIL PROTECTED]
-f -r $*.a_tmp
@[EMAIL PROTECTED]
$*.a_tmp
@[EMAIL PROTECTED]
$*.a_tmp; ar x ../$*.a; rm -f _dladdr.o
$(CCLIB) -o $*$(so) $*.a_tmp/*.o
@[EMAIL PROTECTED]
-f -r $*.a_tmp
default: libL$(so) libG$(so) libP$(so) libW$(so) libD3$(so)
agd: libAGD$(so)
geowin: libGeoW$(so)
but make shared(according to file Install/unix.txt) does not work .
i m using gcc version 3.3.2
n here is my uname -a output-->
SunOS vijayashree 5.8 Generic_108528-18 sun4u sparc SUNW,Sun-Fire-880
So finally my doubts are :
1). Can the problem of virtual memory exhaustion be solved moving to
64-bit platform ?
2). How do i generate 64-bit code (using -m64 option ?)
3). Whats the value of CCLIB in that makefile ?
4). How can i generate a .so file given all .o files (basically
makefile
is doing the same by extracting all object files from archive.)?
Any other info required ,kindly ask me ..
kindly help me to get out of this problem.
Thanx in advance :-)


|