[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Problem linking against coinor-symphony libraries



Hi.

I am trying to link against a library that calls functions in another
library (in this case, coinor-symphony, the a mixed integer linear
programming solver). However, I keep running into an undefined symbols
error. Mysteriously, it works when I directly compile the object files
together, rather than build a library anbd link against that library.

A small test case is here:

http://www.ee.iitb.ac.in/~akumar/dump/libtest.tar.gz

Here is what you get if you run make:

gcc -Wall -fopenmp -c -o milp.o milp.c
gcc -Wall -fopenmp -fPIC -c -o symtest.o symtest.c -I/usr/include/coin
gcc -Wall -fPIC -fopenmp -shared -Wl,--rpath -Wl,/usr/lib -o
libsymtest.so symtest.o `pkg-config --libs symphony`
g++ -Wall -fopenmp -o milp milp.o `pkg-config --libs symphony`
-L. -lsymtest
./libsymtest.so: undefined reference to `sym_parse_command_line'
./libsymtest.so: undefined reference to `sym_close_environment'
./libsymtest.so: undefined reference to `sym_load_problem'
./libsymtest.so: undefined reference to `sym_solve'
./libsymtest.so: undefined reference to `sym_open_environment'
collect2: error: ld returned 1 exit status
Makefile:4: recipe for target 'milp' failed
make: *** [milp] Error 1

But if I try to do this, I can compile and run things:

g++ -c `pkg-config --cflags symphony` milp.c
g++ -c `pkg-config --cflags symphony` symtest.c
g++ -fopenmp milp.o symtest.o -o milp `pkg-config --libs symphony`

things work perfectly.

Could you please point out what I am missing? And this problem seems
to occur only with the symphony libraries; linking against other
libraries (notably ones that don't require fopenmp) seem to go through
fine.

Thanks.

Kumar


Reply to: