[Bonmin] Undefined references inside Bonmin libraries

Stefan Vigerske stefan at math.hu-berlin.de
Fri Oct 25 09:53:37 EDT 2013


Hi,

the order of libraries is important.
Try moving -lCoinUtils -lz -lblas -llapack to the end.

Stefan

On 10/25/2013 02:45 PM, Virginia Costa wrote:
> *Dear all,*
> *
> *
> *I'm a new user of Bonmin and I'd like to execute the example of this
> package.
> I did the following makefile to execute the CppExample:*
>
> CC=g++
>
> IDIR+=/usr/local/include/coin/
>
> CCFLAGS+= -I$(IDIR)
> #CCFLAGS+= -O3
> CCFLAGS+= -g
> #CCFLAGS+= -v
> CCFLAGS+= -static
>
> SRC=./src/
>
> LIBS+= -lm
> LIBS+= -lz
> LIBS+= -lblas
> LIBS+= -llapack
> LIBS+= -lBonCouenne
> LIBS+= -lbonmin
> LIBS+= -lbonminampl
> LIBS+= -lCbc
> LIBS+= -lCbcSolver
> LIBS+= -lCgl
> LIBS+= -lClp
> LIBS+= -lcoinasl
> LIBS+= -lCoinUtils
> LIBS+= -lCouenne
> LIBS+= -lCouenneReadnl
> LIBS+= -lipopt
> LIBS+= -lipoptamplinterface
> LIBS+= -lOsi
> LIBS+= -lOsiCbc
> LIBS+= -lOsiClp
> LIBS+= -lOsiCommonTests
>
> DEPS+= $(SRC)esp.cpp
> DEPS+= $(SRC)MyTMINLP.cpp
>
> OBJ+= $(SRC)esp.o
> OBJ+= $(SRC)MyTMINLP.o
>
> %.o: %.cpp $(DEPS)
> $(CC) $(CCFLAGS) -c -o $@ $<
> all: esp
>
> esp: $(OBJ)
> $(CC) $(CCFLAGS) -o esp $(OBJ) $(LIBS)
>
> clean:
> /bin/rm -f $(SRC)*.o $(SRC)*~
>
> deepclean:
> /bin/rm -f $(SRC)*.o $(SRC)*~ esp
>
> .c.o:
> $(CC) -o $(CCFLAGS) -c $<
>
> *But, when I try to execute the example, it returns the following error:*
>
> /usr/local/lib/libbonmin.a(BonLinearCutsGenerator.o): na função
> `Bonmin::LinearCutsGenerator::generateCuts(OsiSolverInterface const&,
> OsiCuts&, CglTreeInfo) const':
> BonLinearCutsGenerator.cpp:(.text+0x174e): referência indefinida para
> `CoinIsnan(double)'
> BonLinearCutsGenerator.cpp:(.text+0x17d5): referência indefinida para
> `CoinIsnan(double)'
> BonLinearCutsGenerator.cpp:(.text+0x17e8): referência indefinida para
> `CoinIsnan(double)'
> BonLinearCutsGenerator.cpp:(.text+0x180b): referência indefinida para
> `CoinFinite(double)'
> BonLinearCutsGenerator.cpp:(.text+0x181e): referência indefinida para
> `CoinFinite(double)'
> BonLinearCutsGenerator.cpp:(.text+0x18df): referência indefinida para
> `CoinIsnan(double)'
> BonLinearCutsGenerator.cpp:(.text+0x1906): referência indefinida para
> `CoinFinite(double)'
> BonLinearCutsGenerator.cpp:(.text+0x1919): referência indefinida para
> `CoinFinite(double)'
> /usr/local/lib/libbonmin.a(BonTMINLP2TNLP.o): na função
> `Bonmin::TMINLP2TNLP::outputDiffs(std::string const&, std::string const*)':
> BonTMINLP2TNLP.cpp:(.text+0xcff): referência indefinida para
> `CoinIsnan(double)'
> BonTMINLP2TNLP.cpp:(.text+0xe77): referência indefinida para
> `CoinIsnan(double)'
> BonTMINLP2TNLP.cpp:(.text+0x124f): referência indefinida para
> `CoinIsnan(double)'
> BonTMINLP2TNLP.cpp:(.text+0x1274): referência indefinida para
> `CoinFinite(double)'
> BonTMINLP2TNLP.cpp:(.text+0x1287): referência indefinida para
> `CoinFinite(double)'
> BonTMINLP2TNLP.cpp:(.text+0x12ef): referência indefinida para
> `CoinIsnan(double)'
> BonTMINLP2TNLP.cpp:(.text+0x1314): referência indefinida para
> `CoinFinite(double)'
> BonTMINLP2TNLP.cpp:(.text+0x1327): referência indefinida para
> `CoinFinite(double)'
> /usr/local/lib/libbonmin.a(BonOsiTMINLPInterface.o): na função
> `CoinRelFltEq::operator()(double, double) const':
> BonOsiTMINLPInterface.cpp:(.text._ZNK12CoinRelFltEqclEdd[_ZNK12CoinRelFltEqclEdd]+0x14):
> referência indefinida para `CoinIsnan(double)'
> BonOsiTMINLPInterface.cpp:(.text._ZNK12CoinRelFltEqclEdd[_ZNK12CoinRelFltEqclEdd]+0x2f):
> referência indefinida para `CoinIsnan(double)'
> BonOsiTMINLPInterface.cpp:(.text._ZNK12CoinRelFltEqclEdd[_ZNK12CoinRelFltEqclEdd]+0x51):
> referência indefinida para `CoinFinite(double)'
> BonOsiTMINLPInterface.cpp:(.text._ZNK12CoinRelFltEqclEdd[_ZNK12CoinRelFltEqclEdd]+0x60):
> referência indefinida para `CoinFinite(double)'
> /usr/local/lib/libbonmin.a(BonOsiTMINLPInterface.o):(.data.rel.ro._ZTVN6Bonmin18OsiTMINLPInterfaceE[_ZTVN6Bonmin18OsiTMINLPInterfaceE]+0x458):
> referência indefinida para
> `OsiSolverInterface::activateRowCutDebugger(double const*, bool)'
> /usr/local/lib/libbonmin.a(BonOsiTMINLPInterface.o):(.data.rel.ro._ZTVN6Bonmin18OsiTMINLPInterfaceE[_ZTVN6Bonmin18OsiTMINLPInterfaceE]+0x490):
> referência indefinida para `OsiSolverInterface::getReducedGradient(double*,
> double*, double const*) const'
> /usr/local/lib/libbonmin.a(BonTNLPSolver.o): na função
> `Bonmin::TNLPSolver::UnsolvedError::writeDiffFiles(std::string) const':
> BonTNLPSolver.cpp:(.text+0x1087): referência indefinida para
> `CoinIsnan(double)'
> BonTNLPSolver.cpp:(.text+0x1209): referência indefinida para
> `CoinIsnan(double)'
> BonTNLPSolver.cpp:(.text+0x15ff): referência indefinida para
> `CoinIsnan(double)'
> BonTNLPSolver.cpp:(.text+0x1624): referência indefinida para
> `CoinFinite(double)'
> BonTNLPSolver.cpp:(.text+0x1637): referência indefinida para
> `CoinFinite(double)'
> BonTNLPSolver.cpp:(.text+0x169f): referência indefinida para
> `CoinIsnan(double)'
> BonTNLPSolver.cpp:(.text+0x16c4): referência indefinida para
> `CoinFinite(double)'
> BonTNLPSolver.cpp:(.text+0x16d7): referência indefinida para
> `CoinFinite(double)'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpMumpsSolverInterface.o):
> na função `Ipopt::MumpsSolverInterface::SymbolicFactorization()':
> (.text+0x115b): referência indefinida para `dmumps_c'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpMumpsSolverInterface.o):
> na função `Ipopt::MumpsSolverInterface::DetermineDependentRows(int const*,
> int const*, std::list<int, std::allocator<int> >&)':
> (.text+0x1382): referência indefinida para `dmumps_c'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpMumpsSolverInterface.o):
> na função `Ipopt::MumpsSolverInterface::DetermineDependentRows(int const*,
> int const*, std::list<int, std::allocator<int> >&)':
> (.text+0x149e): referência indefinida para `dmumps_c'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpMumpsSolverInterface.o):
> na função `Ipopt::MumpsSolverInterface::Factorization(bool, int)':
> (.text+0x159d): referência indefinida para `dmumps_c'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpMumpsSolverInterface.o):
> na função `Ipopt::MumpsSolverInterface::Factorization(bool, int)':
> (.text+0x17e4): referência indefinida para `dmumps_c'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpMumpsSolverInterface.o):(.text+0x19da):
> mais referências indefinidas para seguir `dmumps_c'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpMumpsSolverInterface.o):
> na função `Ipopt::MumpsSolverInterface::~MumpsSolverInterface()':
> (.text+0x1beb): referência indefinida para `MPI_Finalize'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpMumpsSolverInterface.o):
> na função `Ipopt::MumpsSolverInterface::MumpsSolverInterface()':
> (.text+0x1d58): referência indefinida para `MPI_Init'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpMumpsSolverInterface.o):
> na função `Ipopt::MumpsSolverInterface::MumpsSolverInterface()':
> (.text+0x1d64): referência indefinida para `MPI_Comm_rank'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpMumpsSolverInterface.o):
> na função `Ipopt::MumpsSolverInterface::MumpsSolverInterface()':
> (.text+0x1dbc): referência indefinida para `dmumps_c'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libCoinUtils.a(CoinFileIO.o):
> na função `CoinFileOutput::create(std::string const&,
> CoinFileOutput::Compression)':
> (.text+0xe0b): referência indefinida para `BZ2_bzWriteOpen'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libCoinUtils.a(CoinFileIO.o):
> na função `CoinFileOutput::create(std::string const&,
> CoinFileOutput::Compression)':
> (.text+0x1042): referência indefinida para `gzopen'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libCoinUtils.a(CoinFileIO.o):
> na função `CoinGzipFileOutput::write(void const*, int)':
> (.text._ZN18CoinGzipFileOutput5writeEPKvi[_ZN18CoinGzipFileOutput5writeEPKvi]+0x5):
> referência indefinida para `gzwrite'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libCoinUtils.a(CoinFileIO.o):
> na função `CoinBzip2FileOutput::write(void const*, int)':
> (.text._ZN19CoinBzip2FileOutput5writeEPKvi[_ZN19CoinBzip2FileOutput5writeEPKvi]+0x21):
> referência indefinida para `BZ2_bzWrite'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libCoinUtils.a(CoinFileIO.o):
> na função `CoinGzipFileInput::readRaw(void*, int)':
> (.text._ZN17CoinGzipFileInput7readRawEPvi[_ZN17CoinGzipFileInput7readRawEPvi]+0x5):
> referência indefinida para `gzread'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libCoinUtils.a(CoinFileIO.o):
> na função `CoinBzip2FileInput::readRaw(void*, int)':
> (.text._ZN18CoinBzip2FileInput7readRawEPvi[_ZN18CoinBzip2FileInput7readRawEPvi]+0x1e):
> referência indefinida para `BZ2_bzRead'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libCoinUtils.a(CoinFileIO.o):
> na função `CoinGzipFileOutput::~CoinGzipFileOutput()':
> (.text._ZN18CoinGzipFileOutputD2Ev[_ZN18CoinGzipFileOutputD5Ev]+0x19):
> referência indefinida para `gzclose'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libCoinUtils.a(CoinFileIO.o):
> na função `CoinBzip2FileOutput::~CoinBzip2FileOutput()':
> (.text._ZN19CoinBzip2FileOutputD2Ev[_ZN19CoinBzip2FileOutputD5Ev]+0x2d):
> referência indefinida para `BZ2_bzWriteClose'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libCoinUtils.a(CoinFileIO.o):
> na função `CoinGzipFileOutput::~CoinGzipFileOutput()':
> (.text._ZN18CoinGzipFileOutputD0Ev[_ZN18CoinGzipFileOutputD5Ev]+0x19):
> referência indefinida para `gzclose'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libCoinUtils.a(CoinFileIO.o):
> na função `CoinBzip2FileOutput::~CoinBzip2FileOutput()':
> (.text._ZN19CoinBzip2FileOutputD0Ev[_ZN19CoinBzip2FileOutputD5Ev]+0x2d):
> referência indefinida para `BZ2_bzWriteClose'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libCoinUtils.a(CoinFileIO.o):
> na função `CoinGzipFileInput::~CoinGzipFileInput()':
> (.text._ZN17CoinGzipFileInputD0Ev[_ZN17CoinGzipFileInputD5Ev]+0x19):
> referência indefinida para `gzclose'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libCoinUtils.a(CoinFileIO.o):
> na função `CoinGzipFileInput::~CoinGzipFileInput()':
> (.text._ZN17CoinGzipFileInputD2Ev[_ZN17CoinGzipFileInputD5Ev]+0x19):
> referência indefinida para `gzclose'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libCoinUtils.a(CoinFileIO.o):
> na função `CoinBzip2FileInput::~CoinBzip2FileInput()':
> (.text._ZN18CoinBzip2FileInputD0Ev[_ZN18CoinBzip2FileInputD5Ev]+0x26):
> referência indefinida para `BZ2_bzReadClose'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libCoinUtils.a(CoinFileIO.o):
> na função `CoinBzip2FileInput::~CoinBzip2FileInput()':
> (.text._ZN18CoinBzip2FileInputD2Ev[_ZN18CoinBzip2FileInputD5Ev]+0x26):
> referência indefinida para `BZ2_bzReadClose'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libCoinUtils.a(CoinFileIO.o):
> na função `CoinGzipFileInput::CoinGzipFileInput(std::string const&)':
> (.text._ZN17CoinGzipFileInputC2ERKSs[_ZN17CoinGzipFileInputC5ERKSs]+0xc1):
> referência indefinida para `gzopen'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libCoinUtils.a(CoinFileIO.o):
> na função `CoinBzip2FileInput::CoinBzip2FileInput(std::string const&)':
> (.text._ZN18CoinBzip2FileInputC2ERKSs[_ZN18CoinBzip2FileInputC5ERKSs]+0xda):
> referência indefinida para `BZ2_bzReadOpen'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpBlas.o): na
> função `Ipopt::IpBlasDdot(int, double const*, int, double const*, int)':
> (.text+0x21): referência indefinida para `ddot_'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpBlas.o): na
> função `Ipopt::IpBlasDnrm2(int, double const*, int)':
> (.text+0x47): referência indefinida para `dnrm2_'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpBlas.o): na
> função `Ipopt::IpBlasDasum(int, double const*, int)':
> (.text+0x67): referência indefinida para `dasum_'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpBlas.o): na
> função `Ipopt::IpBlasIdamax(int, double const*, int)':
> (.text+0x87): referência indefinida para `idamax_'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpBlas.o): na
> função `Ipopt::IpBlasDcopy(int, double const*, int, double*, int)':
> (.text+0xb1): referência indefinida para `dcopy_'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpBlas.o): na
> função `Ipopt::IpBlasDaxpy(int, double, double const*, int, double*, int)':
> (.text+0xf2): referência indefinida para `daxpy_'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpBlas.o): na
> função `Ipopt::IpBlasDscal(int, double, double*, int)':
> (.text+0x125): referência indefinida para `dscal_'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpBlas.o): na
> função `Ipopt::IpBlasDgemv(bool, int, int, double, double const*, int,
> double const*, int, double, double*, int)':
> (.text+0x1c1): referência indefinida para `dgemv_'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpBlas.o): na
> função `Ipopt::IpBlasDsymv(int, double, double const*, int, double const*,
> int, double, double*, int)':
> (.text+0x23f): referência indefinida para `dsymv_'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpBlas.o): na
> função `Ipopt::IpBlasDgemm(bool, bool, int, int, int, double, double
> const*, int, double const*, int, double, double*, int)':
> (.text+0x326): referência indefinida para `dgemm_'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpBlas.o): na
> função `Ipopt::IpBlasDsyrk(bool, int, int, double, double const*, int,
> double, double*, int)':
> (.text+0x3c9): referência indefinida para `dsyrk_'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpBlas.o): na
> função `Ipopt::IpBlasDtrsm(bool, int, int, double, double const*, int,
> double*, int)':
> (.text+0x48a): referência indefinida para `dtrsm_'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpLapack.o):
> na função `Ipopt::IpLapackDpotrs(int, int, double const*, int, double*,
> int)':
> (.text+0x50): referência indefinida para `dpotrs_'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpLapack.o):
> na função `Ipopt::IpLapackDpotrf(int, double*, int, int&)':
> (.text+0x93): referência indefinida para `dpotrf_'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpLapack.o):
> na função `Ipopt::IpLapackDsyev(bool, int, double*, int, double*, int&)':
> (.text+0x134): referência indefinida para `dsyev_'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpLapack.o):
> na função `Ipopt::IpLapackDsyev(bool, int, double*, int, double*, int&)':
> (.text+0x1aa): referência indefinida para `dsyev_'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpLapack.o):
> na função `Ipopt::IpLapackDgetrf(int, double*, int*, int, int&)':
> (.text+0x20c): referência indefinida para `dgetrf_'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpLapack.o):
> na função `Ipopt::IpLapackDgetrs(int, int, double const*, int, int*,
> double*, int)':
> (.text+0x278): referência indefinida para `dgetrs_'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(LibraryHandler.o):
> na função `LSL_loadLib':
> (.text+0x24): referência indefinida para `dlopen'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(LibraryHandler.o):
> na função `LSL_loadLib':
> (.text+0x51): referência indefinida para `dlerror'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(LibraryHandler.o):
> na função `LSL_loadSym':
> (.text+0xe0): referência indefinida para `dlsym'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(LibraryHandler.o):
> na função `LSL_loadSym':
> (.text+0xe8): referência indefinida para `dlerror'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(LibraryHandler.o):
> na função `LSL_unloadLib':
> (.text+0x91): referência indefinida para `dlclose'
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libipopt.a(IpMa28Partition.o):
> na função `ma28part_':
> (.text+0x172): referência indefinida para `dcopy_'
> collect2: erro: ld returned 1 exit status
> make: ** [esp] Erro 1
>
> *Could somebody help me?
>
> Thanks.
> Virginia. *
>
>
>
> _______________________________________________
> Bonmin mailing list
> Bonmin at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/bonmin
>



More information about the Bonmin mailing list