[Ipopt] Problem running Ipopt matlab interface

Paul van Hoven paul.van.hoven at googlemail.com
Fri Jul 27 05:59:28 EDT 2012


Thanks for your quick reply. I noticed that I accidently used the
wrong Makefile. Instead I now use the correct on that was create by
the configure script. Unfortunately I still get an error that seems to
be related to the fortran libraries but I'm not shure about that.

This is what the Makefile looks like
paul at gauss:~/lib_src/CoinIpopt/build/Ipopt/contrib/MatlabInterface/src>
cat Makefile
# Copyright (C) 2007, 2009 Peter Carbonetto. All Rights Reserved.
# This code is published under the Eclipse Public License.
#
# Author: Peter Carbonetto
#         Dept. of Computer Science
#         University of British Columbia
#         May 19, 2007

# INSTRUCTIONS: Please modify the following few variables. See the
# readme.html file for more information.

# This variable corresponds to the base directory of your MATLAB
# installation. This is the directory so that in its 'bin/'
# subdirectory you see all the matlab executables (such as 'matlab',
# 'mex', etc.)
MATLAB_HOME = /net/matlab/Matlab2011b

# Set the suffix for matlab mex files. The contents of the
# $(MATLAB_HOME)/extern/examples/mex directory might be able to help
# you in your choice.
MEXSUFFIX   = mexa64

# This is the command used to call the mex program. Usually, it is
# just "mex". But it also may be something like
# /user/local/R2006b/bin/mex if "mex" doesn't work.
MEX = $(MATLAB_HOME)/bin/mex

#############################################################################
# Do not modify anything below unless you know what you're doing.
exec_prefix = ${prefix}
prefix      = /homes/numerik/paul/lib/Ipopt
libdir      = ${exec_prefix}/lib64/coin

CXX         = /usr/site-local/bin/g++-4.2
CXXFLAGS    = -O3 -pipe -DNDEBUG -pedantic-errors -Wimplicit
-Wparentheses -Wreturn-type -Wcast-qual -Wall -Wpointer-arith
-Wwrite-strings -Wconversion -Wno-unknown-pragmas -fPIC -fexceptions
-DFUNNY_LAPACK_FINT  -DMATLAB_MEXFILE # -DMWINDEXISINT
LDFLAGS     = $(CXXFLAGS)

COIN_HAS_PKGCONFIG = TRUE
COIN_CXX_IS_CL = #TRUE

# Include directories (we use the CYGPATH_W variables to allow
compilation with Windows compilers)
ifeq ($(COIN_HAS_PKGCONFIG), TRUE)
  INCL = `PKG_CONFIG_PATH=/homes/numerik/paul/lib/Ipopt/lib/pkgconfig::/homes/numerik/paul/lib_src/CoinIpopt/build/ThirdParty/ASL:/homes/numerik/paul/lib_src/CoinIpopt/build/ThirdParty/Blas:/homes/numerik/paul/lib_src/CoinIpopt/build/ThirdParty/Lapack:/homes/numerik/paul/lib_src/CoinIpopt/build/ThirdParty/HSL:/homes/numerik/paul/lib_src/CoinIpopt/build/Ipopt:/homes/numerik/paul/lib_src/CoinIpopt/build/ThirdParty/ASL:/homes/numerik/paul/lib_src/CoinIpopt/build/ThirdParty/Blas:/homes/numerik/paul/lib_src/CoinIpopt/build/ThirdParty/Lapack:/homes/numerik/paul/lib_src/CoinIpopt/build/ThirdParty/HSL:/homes/numerik/paul/lib_src/CoinIpopt/build/Ipopt
/usr/bin/pkg-config --cflags ipopt`
else
  INCL = -I`$(CYGPATH_W) /homes/numerik/paul/lib/Ipopt/include/coin`
endif

# Linker flags
ifeq ($(COIN_HAS_PKGCONFIG), TRUE)
  LIBS = `PKG_CONFIG_PATH=/homes/numerik/paul/lib/Ipopt/lib/pkgconfig::/homes/numerik/paul/lib_src/CoinIpopt/build/ThirdParty/ASL:/homes/numerik/paul/lib_src/CoinIpopt/build/ThirdParty/Blas:/homes/numerik/paul/lib_src/CoinIpopt/build/ThirdParty/Lapack:/homes/numerik/paul/lib_src/CoinIpopt/build/ThirdParty/HSL:/homes/numerik/paul/lib_src/CoinIpopt/build/Ipopt:/homes/numerik/paul/lib_src/CoinIpopt/build/ThirdParty/ASL:/homes/numerik/paul/lib_src/CoinIpopt/build/ThirdParty/Blas:/homes/numerik/paul/lib_src/CoinIpopt/build/ThirdParty/Lapack:/homes/numerik/paul/lib_src/CoinIpopt/build/ThirdParty/HSL:/homes/numerik/paul/lib_src/CoinIpopt/build/Ipopt
/usr/bin/pkg-config --libs ipopt`
else
  ifeq ($(COIN_CXX_IS_CL), TRUE)
    LIBS = /link /libpath:`$(CYGPATH_W)
/homes/numerik/paul/lib/Ipopt/lib/coin` libipopt.lib -llapack -lblas
-lm  -ldl
  else
    LIBS = -L/homes/numerik/paul/lib/Ipopt/lib/coin -lipopt -llapack
-lblas -lm  -ldl
  endif
endif

# The following is necessary under cygwin, if native compilers are used
CYGPATH_W = echo

MEXFLAGS    = -v -cxx -O CC="$(CXX)" CXX="$(CXX)" LD="$(CXX)"       \
              COPTIMFLAGS="$(CXXFLAGS)" CXXOPTIMFLAGS="$(CXXFLAGS)" \
              LDOPTIMFLAGS="$(LDFLAGS)"

TARGET = ipopt.$(MEXSUFFIX)
OBJS   = matlabexception.o      \
         matlabfunctionhandle.o \
         matlabjournal.o        \
         iterate.o              \
         ipoptoptions.o         \
         options.o              \
         sparsematrix.o         \
         callbackfunctions.o    \
         matlabinfo.o           \
         matlabprogram.o        \
         ipopt.o

SRCDIR = ../../../../../Ipopt/contrib/MatlabInterface/src
VPATH = $(SRCDIR)

all: $(TARGET)

install: $(TARGET)
	if test -d $(libdir); then : ; else mkdir $(libdir); fi
	cp $(SRCDIR)/../ipopt.m $(TARGET) $(libdir)

uninstall:
	rm -f $(libdir)/ipopt.m $(libdir)/ipopt.$(MEXSUFFIX)

$(TARGET): $(OBJS)
	$(MEX) $(MEXFLAGS) $(LIBS) -output $@ $^

%.o: %.cpp
	$(CXX) $(CXXFLAGS) $(INCL) -I$(MATLAB_HOME)/extern/include \
        -o $@ -c $^

clean:
	rm -f $(OBJS) $(TARGET)

distclean: clean


And this is the output I get
paul at gauss:~/lib_src/CoinIpopt/build/Ipopt/contrib/MatlabInterface/src> make
/usr/site-local/bin/g++-4.2 -O3 -pipe -DNDEBUG -pedantic-errors
-Wimplicit -Wparentheses -Wreturn-type -Wcast-qual -Wall
-Wpointer-arith -Wwrite-strings -Wconversion -Wno-unknown-pragmas
-fPIC -fexceptions -DFUNNY_LAPACK_FINT  -DMATLAB_MEXFILE
`PKG_CONFIG_PATH=/homes/numerik/paul/lib/Ipopt/lib/pkgconfig::/homes/numerik/paul/lib_src/CoinIpopt/build/ThirdParty/ASL:/homes/numerik/paul/lib_src/CoinIpopt/build/ThirdParty/Blas:/homes/numerik/paul/lib_src/CoinIpopt/build/ThirdParty/Lapack:/homes/numerik/paul/lib_src/CoinIpopt/build/ThirdParty/HSL:/homes/numerik/paul/lib_src/CoinIpopt/build/Ipopt:/homes/numerik/paul/lib_src/CoinIpopt/build/ThirdParty/ASL:/homes/numerik/paul/lib_src/CoinIpopt/build/ThirdParty/Blas:/homes/numerik/paul/lib_src/CoinIpopt/build/ThirdParty/Lapack:/homes/numerik/paul/lib_src/CoinIpopt/build/ThirdParty/HSL:/homes/numerik/paul/lib_src/CoinIpopt/build/Ipopt
/usr/bin/pkg-config --cflags ipopt`
-I/net/matlab/Matlab2011b/extern/include \
        -o matlabexception.o -c
../../../../../Ipopt/contrib/MatlabInterface/src/matlabexception.cpp
In file included from
/homes/numerik/paul/lib_src/CoinIpopt/Ipopt/src/Common/IpDebug.hpp:12,
                 from
/homes/numerik/paul/lib_src/CoinIpopt/Ipopt/src/Common/IpUtils.hpp:14,
                 from
../../../../../Ipopt/contrib/MatlabInterface/src/matlabexception.cpp:10:
/homes/numerik/paul/lib_src/CoinIpopt/Ipopt/src/Common/IpoptConfig.h:39:30:
error: configall_system.h: No such file or directory
In file included from
/homes/numerik/paul/lib_src/CoinIpopt/Ipopt/src/Common/IpUtils.hpp:14,
                 from
../../../../../Ipopt/contrib/MatlabInterface/src/matlabexception.cpp:10:
/homes/numerik/paul/lib_src/CoinIpopt/Ipopt/src/Common/IpDebug.hpp:21:4:
error: #error "don't have header file for assert"
In file included from
/homes/numerik/paul/lib_src/CoinIpopt/Ipopt/src/Common/IpDebug.hpp:12,
                 from
/homes/numerik/paul/lib_src/CoinIpopt/Ipopt/src/Common/IpUtils.hpp:14,
                 from
../../../../../Ipopt/contrib/MatlabInterface/src/matlabexception.cpp:10:
/homes/numerik/paul/lib_src/CoinIpopt/Ipopt/src/Common/IpoptConfig.h:102:
error: 'FORTRAN_INTEGER_TYPE' does not name a type
make: *** [matlabexception.o] Fehler 1




2012/7/26 Tony Kelman <kelman at berkeley.edu>:
> Hi again. From your original email, it looks like you modified the makefile
> for the Matlab interface a fair amount relative to what configure generated?
> The line that appears to be causing a problem is
>>
>> -L/usr/site-local/lib/gcc/x86_64-unknown-linux-gnu/4.2.4 -lgfortran
>
>
> This is leading mex to link against the 4.2.4 version of libgfortran, rather
> than the 4.6 version that you compiled BLAS, LAPACK, and the HSL routines
> with. I'm guessing that if gfortran-4.6 is in /usr/bin, then the libgfortran
> that you want to link against is probably in
> /usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.something (possibly with the
> 2nd-to-last folder named more specific depending on your distro), or maybe
> just in /usr/lib[64].
>
> Usually pkg-config figures this all out for you and automatically links to
> the right libraries. Was that method not working?
>
> -Tony
>
> -----Original Message----- From: Paul van Hoven
> Sent: Thursday, July 26, 2012 2:34 AM
> To: Tony Kelman
> Cc: ipopt at list.coin-or.org
> Subject: Re: [Ipopt] Problem running Ipopt matlab interface
>
>
> Thanks for the answers. I built a static version of ipopt. But now I
> get an error when compiling the Matlabinterface:
>
> This was my configure call for compiling ipopt:
> ../configure --prefix=/homes/numerik/paul/lib/Ipopt \
> CXX=/usr/site-local/bin/g++-4.2 \
> CC=/usr/site-local/bin/gcc-4.2 \
> F77=/usr/bin/gfortran-4.6 \
> ADD_CXXFLAGS="-fPIC -fexceptions -DFUNNY_LAPACK_FINT" \
> ADD_CFLAGS="-fPIC -fexceptions" \
> ADD_FFLAGS="-fPIC -fexceptions" \
> --with-matlab-home=/net/matlab/Matlab2011b \
> LDFLAGS="-L/usr/lib64 -lblas_pic" \
> -disable-shared
>
> Ipopt compiled fine, but when I try to compile the matlab interface I
> get an error:
> paul at gauss:~/lib_src/CoinIpopt/Ipopt/contrib/MatlabInterface/src> make
> /usr/site-local/bin/g++-4.2 -fPIC -DMX_COMPAT_32 -DMATLAB_MEX_FILE
> -DMWINDEXISINT -I/homes/numerik/paul/lib/Ipopt/include/coin
> -I/net/matlab/Matlab2011b/extern/include -o matlabjournal.o -c
> matlabjournal.cpp
> /usr/site-local/bin/g++-4.2 -fPIC -DMX_COMPAT_32 -DMATLAB_MEX_FILE
> -DMWINDEXISINT -I/homes/numerik/paul/lib/Ipopt/include/coin
> -I/net/matlab/Matlab2011b/extern/include -o matlabexception.o -c
> matlabexception.cpp
> /usr/site-local/bin/g++-4.2 -fPIC -DMX_COMPAT_32 -DMATLAB_MEX_FILE
> -DMWINDEXISINT -I/homes/numerik/paul/lib/Ipopt/include/coin
> -I/net/matlab/Matlab2011b/extern/include -o matlabfunctionhandle.o -c
> matlabfunctionhandle.cpp
> /usr/site-local/bin/g++-4.2 -fPIC -DMX_COMPAT_32 -DMATLAB_MEX_FILE
> -DMWINDEXISINT -I/homes/numerik/paul/lib/Ipopt/include/coin
> -I/net/matlab/Matlab2011b/extern/include -o iterate.o -c iterate.cpp
> /usr/site-local/bin/g++-4.2 -fPIC -DMX_COMPAT_32 -DMATLAB_MEX_FILE
> -DMWINDEXISINT -I/homes/numerik/paul/lib/Ipopt/include/coin
> -I/net/matlab/Matlab2011b/extern/include -o ipoptoptions.o -c
> ipoptoptions.cpp
> /usr/site-local/bin/g++-4.2 -fPIC -DMX_COMPAT_32 -DMATLAB_MEX_FILE
> -DMWINDEXISINT -I/homes/numerik/paul/lib/Ipopt/include/coin
> -I/net/matlab/Matlab2011b/extern/include -o options.o -c options.cpp
> /usr/site-local/bin/g++-4.2 -fPIC -DMX_COMPAT_32 -DMATLAB_MEX_FILE
> -DMWINDEXISINT -I/homes/numerik/paul/lib/Ipopt/include/coin
> -I/net/matlab/Matlab2011b/extern/include -o sparsematrix.o -c
> sparsematrix.cpp
> /usr/site-local/bin/g++-4.2 -fPIC -DMX_COMPAT_32 -DMATLAB_MEX_FILE
> -DMWINDEXISINT -I/homes/numerik/paul/lib/Ipopt/include/coin
> -I/net/matlab/Matlab2011b/extern/include -o callbackfunctions.o -c
> callbackfunctions.cpp
> /usr/site-local/bin/g++-4.2 -fPIC -DMX_COMPAT_32 -DMATLAB_MEX_FILE
> -DMWINDEXISINT -I/homes/numerik/paul/lib/Ipopt/include/coin
> -I/net/matlab/Matlab2011b/extern/include -o matlabinfo.o -c
> matlabinfo.cpp
> /usr/site-local/bin/g++-4.2 -fPIC -DMX_COMPAT_32 -DMATLAB_MEX_FILE
> -DMWINDEXISINT -I/homes/numerik/paul/lib/Ipopt/include/coin
> -I/net/matlab/Matlab2011b/extern/include -o matlabprogram.o -c
> matlabprogram.cpp
> /usr/site-local/bin/g++-4.2 -fPIC -DMX_COMPAT_32 -DMATLAB_MEX_FILE
> -DMWINDEXISINT -I/homes/numerik/paul/lib/Ipopt/include/coin
> -I/net/matlab/Matlab2011b/extern/include -o ipopt.o -c ipopt.cpp
> /net/matlab/Matlab2011b/bin/mex -cxx CC='/usr/site-local/bin/g++-4.2'
> CXX='/usr/site-local/bin/g++-4.2' LD='/usr/site-local/bin/g++-4.2' -lm
> -L/homes/numerik/paul/lib/Ipopt/lib64/coin -lipopt
> -L/homes/numerik/paul/lib/Ipopt/lib64/coin/ThirdParty -lcoinlapack
> -lcoinblas -lcoinhsl -lamplsolver
> -L/usr/site-local/lib/gcc/x86_64-unknown-linux-gnu/4.2.4 -lgfortran
> -ldl -largeArrayDims -output ipopt.mexa64 matlabjournal.o
> matlabexception.o matlabfunctionhandle.o iterate.o ipoptoptions.o
> options.o sparsematrix.o callbackfunctions.o matlabinfo.o
> matlabprogram.o ipopt.o
> /homes/numerik/paul/lib/Ipopt/lib64/coin/ThirdParty/libcoinlapack.a(dlamch.o):
> In function `dlamc2_':
> dlamch.f:(.text+0x762): undefined reference to
> `_gfortran_transfer_integer_write'
> /homes/numerik/paul/lib/Ipopt/lib64/coin/ThirdParty/libcoinblas.a(xerbla.o):
> In function `xerbla_':
> xerbla.f:(.text+0x77): undefined reference to
> `_gfortran_transfer_character_write'
> xerbla.f:(.text+0x87): undefined reference to
> `_gfortran_transfer_integer_write'
> /homes/numerik/paul/lib/Ipopt/lib64/coin/ThirdParty/libcoinhsl.a(ma27ad.o):
> In function `ma27od_':
> ma27ad.f:(.text+0x2f86): undefined reference to
> `_gfortran_transfer_integer_write'
> ma27ad.f:(.text+0x2fa0): undefined reference to
> `_gfortran_transfer_integer_write'
> /homes/numerik/paul/lib/Ipopt/lib64/coin/ThirdParty/libcoinhsl.a(ma27ad.o):
> In function `ma27nd_':
> ma27ad.f:(.text+0x3834): undefined reference to
> `_gfortran_transfer_integer_write'
> ma27ad.f:(.text+0x3854): undefined reference to
> `_gfortran_transfer_integer_write'
> /homes/numerik/paul/lib/Ipopt/lib64/coin/ThirdParty/libcoinhsl.a(ma27ad.o):ma27ad.f:(.text+0x3873):
> more undefined references to `_gfortran_transfer_integer_write' follow
> /homes/numerik/paul/lib/Ipopt/lib64/coin/ThirdParty/libcoinhsl.a(ma27ad.o):
> In function `ma27ad_':
> ma27ad.f:(.text+0x722c): undefined reference to
> `_gfortran_transfer_real_write'
> ma27ad.f:(.text+0x723d): undefined reference to
> `_gfortran_transfer_integer_write'
> ma27ad.f:(.text+0x724e): undefined reference to
> `_gfortran_transfer_integer_write'
> ma27ad.f:(.text+0x725f): undefined reference to
> `_gfortran_transfer_integer_write'
> ma27ad.f:(.text+0x7270): undefined reference to
> `_gfortran_transfer_integer_write'
> ma27ad.f:(.text+0x7281): undefined reference to
> `_gfortran_transfer_integer_write'
> /homes/numerik/paul/lib/Ipopt/lib64/coin/ThirdParty/libcoinhsl.a(ma27ad.o):ma27ad.f:(.text+0x7292):
> more undefined references to `_gfortran_transfer_integer_write' follow
> /homes/numerik/paul/lib/Ipopt/lib64/coin/ThirdParty/libcoinhsl.a(ma27ad.o):
> In function `ma27bd_':
> ma27ad.f:(.text+0x7d05): undefined reference to
> `_gfortran_transfer_real_write'
> ma27ad.f:(.text+0x7dd5): undefined reference to
> `_gfortran_transfer_real_write'
> ma27ad.f:(.text+0x7dea): undefined reference to
> `_gfortran_transfer_integer_write'
> ma27ad.f:(.text+0x7dff): undefined reference to
> `_gfortran_transfer_integer_write'
> ma27ad.f:(.text+0x7efe): undefined reference to
> `_gfortran_transfer_integer_write'
> ma27ad.f:(.text+0x7ff6): undefined reference to
> `_gfortran_transfer_integer_write'
> ma27ad.f:(.text+0x80d6): undefined reference to
> `_gfortran_transfer_integer_write'
> /homes/numerik/paul/lib/Ipopt/lib64/coin/ThirdParty/libcoinhsl.a(ma27ad.o):ma27ad.f:(.text+0x81bb):
> more undefined references to `_gfortran_transfer_integer_write' follow
> /homes/numerik/paul/lib/Ipopt/lib64/coin/ThirdParty/libcoinhsl.a(ma27ad.o):
> In function `ma27bd_':
> ma27ad.f:(.text+0x8686): undefined reference to
> `_gfortran_transfer_real_write'
> ma27ad.f:(.text+0x8766): undefined reference to
> `_gfortran_transfer_integer_write'
> ma27ad.f:(.text+0x87e5): undefined reference to
> `_gfortran_transfer_integer_write'
> ma27ad.f:(.text+0x8a9e): undefined reference to
> `_gfortran_transfer_integer_write'
> ma27ad.f:(.text+0x8b21): undefined reference to
> `_gfortran_transfer_character_write'
> ma27ad.f:(.text+0x8bad): undefined reference to
> `_gfortran_transfer_integer_write'
> ma27ad.f:(.text+0x8c2e): undefined reference to
> `_gfortran_transfer_integer_write'
> ma27ad.f:(.text+0x8cbf): undefined reference to
> `_gfortran_transfer_integer_write'
> ma27ad.f:(.text+0x8d43): undefined reference to
> `_gfortran_transfer_integer_write'
> ma27ad.f:(.text+0x8dba): undefined reference to
> `_gfortran_transfer_integer_write'
> /homes/numerik/paul/lib/Ipopt/lib64/coin/ThirdParty/libcoinhsl.a(ma27ad.o):ma27ad.f:(.text+0x8e9b):
> more undefined references to `_gfortran_transfer_integer_write' follow
> /homes/numerik/paul/lib/Ipopt/lib64/coin/ThirdParty/libcoinhsl.a(ma27ad.o):
> In function `ma27cd_':
> ma27ad.f:(.text+0x931e): undefined reference to
> `_gfortran_transfer_real_write'
> ma27ad.f:(.text+0x940d): undefined reference to
> `_gfortran_transfer_real_write'
> ma27ad.f:(.text+0x9626): undefined reference to
> `_gfortran_transfer_real_write'
> /homes/numerik/paul/lib/Ipopt/lib64/coin/ThirdParty/libcoinhsl.a(mc19ad.o):
> In function `mc19ad_':
> mc19ad.f:(.text+0x2c0): undefined reference to
> `_gfortran_transfer_integer_write'
> mc19ad.f:(.text+0x2da): undefined reference to
> `_gfortran_transfer_integer_write'
> mc19ad.f:(.text+0x2f4): undefined reference to
> `_gfortran_transfer_integer_write'
> mc19ad.f:(.text+0xf87): undefined reference to
> `_gfortran_transfer_integer_write'
> collect2: ld returned 1 exit status
>
>    mex: link of ' "ipopt.mexa64"' failed.
>
> make: *** [ipopt.mexa64] Fehler 1
>
>
>
>
> 2012/7/7 Tony Kelman <kelman at berkeley.edu>:
>>
>> Paul,
>>
>> It looks like the Mathworks recommended compiler for R2011b is
>> GCC/gfortran
>> 4.3, see http://www.mathworks.com/support/compilers/R2011b/glnxa64.html.
>> Successful compilation of the mex file and a working Matlab interface are
>> a
>> bit different, unfortunately.
>>
>> I've noticed this issue with Matlab, it loads its own set of .so libraries
>> which are not always compatible with what you compiled Ipopt against.
>> Particularly since you used F77=/usr/bin/gfortran-4.6 to compile Ipopt
>> (and
>> the ThirdParty sources like Lapack). Before you go to the trouble of
>> switching to GCC/gfortran 4.3 though, will you be needing a shared Ipopt
>> library file, or do you just want to use the Matlab interface? If the
>> latter, I recommend you compile Ipopt with static libraries by adding
>> --disable-shared to the configure command.
>>
>> Since you are using the coinlapack and coinblas reference implementations,
>> static libraries should also work around the namespace collisions
>> (http://list.coin-or.org/pipermail/ipopt/2011-March/002376.html) and
>> incompatible 32/64 bit integer API problem that will affect every linear
>> solver that uses BLAS (all but MA27). If you need to use a shared-library
>> BLAS, it is possible to force Matlab to use your BLAS library instead of
>> its
>> own by using the BLAS_VERSION environment variable, as formerly documented
>> here:
>>
>> http://web.archive.org/web/20090615072921/http://www.mathworks.com/support/solutions/en/data/1-18QUC/
>>
>> Matlab also has its own MA57 library with an incompatible API to the
>> version
>> Ipopt uses, but the problem can be avoided by compiling libcoinhsl as a
>> static library. If you require libcoinhsl to be a shared library you can
>> force Matlab to load libcoinhsl.so before loading its own libmwma57.so by
>> using the LD_PRELOAD environment variable, but then the Matlab command ldl
>> will not function properly on sparse matrices.
>>
>> -Tony
>>
>> -----Original Message----- Date: Fri, 6 Jul 2012 13:19:13 +0200
>> From: Paul van Hoven <paul.van.hoven at googlemail.com>
>> To: ipopt mailing list <ipopt at list.coin-or.org>
>> Subject: [Ipopt] Problem running Ipopt matlab interface
>> Message-ID:
>> <CANqzD4P00-EO9_aQ=8v9-QjGJDzU2cW+VooNc9ikoKTvEa8vLg at mail.gmail.com>
>> Content-Type: text/plain; charset=ISO-8859-1
>>
>>
>> Hi, I just successfully compiled and installed ipopt on a linux
>> machine. Now I'd like to use the matlab interface. Actually everything
>> works fine, the interface compiles fine without any errors or
>> warnings, the compiler version GCC 4.2 works also fine with matlab so
>> there is no warning as well, and the interface is correctly installed.
>> But when I try to run a simple matlab demo app I get the following
>> error:
>>
>>>> IpoptDemo.clusterRunme
>>
>>
>> ------------------------------------------
>> Invalid MEX-file
>> '/homes/numerik/paul/lib/Ipopt/MatlabInterface/ipopt.mexa64':
>> /net/matlab/Matlab2011b/bin/glnxa64/../../sys/os/glnxa64/libgfortran.so.3:
>> version `GFORTRAN_1.4' not
>> found (required by
>> /homes/numerik/paul/lib/Ipopt/lib64/coin/ThirdParty/libcoinlapack.so.1)
>>
>> Error in IpoptDemo.runme (line 45)
>>            [x info] = ipopt(x0,funcs,options);
>>
>> Error in IpoptDemo.clusterRunme (line 9)
>>            IpoptDemo.runme;
>>
>>
>> I'm not shure if it helps but these are the first lines of the
>> makefile for the matlab interface:
>>
>> MATLAB_HOME =/net/matlab/Matlab2011b
>> MEXSUFFIX   =mexa64
>> PATH_TO_IPOPT_COMPILATION= /homes/numerik/paul/lib/Ipopt
>> SRCDIR =
>> /homes/numerik/paul/lib_src/CoinIpopt/Ipopt/contrib/MatlabInterface/src
>>
>>
>> ###############################################################################################
>> DESTINATION_DIR = $(PATH_TO_IPOPT_COMPILATION)/MatlabInterface
>> MEX = $(MATLAB_HOME)/bin/mex
>> #Pay attention to add a by your matlab version supported g++
>> CXX         = /usr/site-local/bin/g++-4.2
>> CXXFLAGS    = -fPIC -DMX_COMPAT_32 -DMATLAB_MEX_FILE -DMWINDEXISINT
>>
>> INCLUDES        = -I$(PATH_TO_IPOPT_COMPILATION)/include/coin
>> -I$(MATLAB_HOME)/extern/include
>>
>> MEXFLAGS    = -cxx CC='$(CXX)' CXX='$(CXX)' LD='$(CXX)' -lm
>> -L$(PATH_TO_IPOPT_COMPILATION)/lib64/coin -lipopt \
>>
>> -L$(PATH_TO_IPOPT_COMPILATION)/lib64/coin/ThirdParty -lcoinlapack
>> -lcoinblas -lcoinhsl -lamplsolver \
>>
>> -L/usr/site-local/lib/gcc/x86_64-unknown-linux-gnu/4.2.4 -lgfortran
>> -ldl -largeArrayDims
>> #Dynamic linking
>> #MEXFLAGS    = -cxx CC='$(CXX)' CXX='$(CXX)' LD='$(CXX)' -lm
>> -L$(PATH_TO_IPOPT_COMPILATION)/lib64/coin -lipopt -largeArrayDims
>>
>>
>> And this was the configure call for configuring ipopt:
>> ../configure --prefix=/homes/numerik/paul/lib/Ipopt \
>> CXX=/usr/site-local/bin/g++-4.2 \
>> CC=/usr/site-local/bin/gcc-4.2 \
>> F77=/usr/bin/gfortran-4.6 \
>> ADD_CXXFLAGS="-fPIC -fexceptions -DFUNNY_LAPACK_FINT" \
>> ADD_CFLAGS="-fPIC -fexceptions" \
>> ADD_FFLAGS="-fPIC -fexceptions" \
>> --with-matlab-home=/net/matlab/Matlab2011b
>>
>> This is what I did so far:
>> 1. I checked that a file called "libgfortran.so.3" is in the directory
>> "/net/matlab/Matlab2011b/bin/glnxa64/../../sys/os/glnxa64"
>> 2. I added the path to the LD_LIBRARY_PATH which had no effect
>> 3. I added an environment path in matlab itself by
>> addpath('/net/matlab/Matlab2011b/bin/glnxa64/../../sys/os/glnxa64')
>> which also had no effect.
>> 4. A simple ipopt demo app written in c++ works fine. So I checked
>> that the installed ipopt version works.
>>
>> Any suggestions how I could repair this problem?
>>
>>
>> ------------------------------
>>
>>
>> _______________________________________________
>> Ipopt mailing list
>> Ipopt at list.coin-or.org
>> http://list.coin-or.org/mailman/listinfo/ipopt
>>
>>
>> End of Ipopt Digest, Vol 91, Issue 4
>> ************************************
>
>



More information about the Ipopt mailing list