Hi Matthias,<div><br></div><div>Thanks for looking into this.</div><div>Yes, using the "everything in one shared library" approach with libscipopt will probably work. I'll test it to be sure and report the results.</div><div>The fact that there are two different library setups (libscipopt vs. Libsoplex/liplpispx/libscip) does seem as if libscipopt is designed as a workaround for library dependency problems - which could instead be solved by using pkgconfig and/or libtool.</div><div>I guess one reason for compiling separately is that in sage we may want to support soplex directly in particular for its exact LP features; whereas we may want to support building SCIP with a different LP solver. <span></span><br><br>Best,</div><div>Matthias<br><br>On Tuesday, July 26, 2016, Matthias Miltenberger <<a href="mailto:miltenberger@zib.de">miltenberger@zib.de</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Matthias,<br>
<br>
please excuse us for not replying earlier.<br>
<br>
I just tried to compile the SCIP Opt Suite 3.2.1 on a Mac and worked without issues (using the clang compiler); also PySCIPOpt works fine with this library. It does indeed generate a .so library instead of an .dylib but a at least according to this SO thread this does not seem to be a problem:<br>
<br>
<a href="https://stackoverflow.com/questions/2339679/what-are-the-differences-between-so-and-dylib-on-osx" target="_blank">https://stackoverflow.com/questions/2339679/what-are-the-differences-between-so-and-dylib-on-osx</a><br>
<br>
Concerning your difficulties with the compilation for Sage, I don't understand why you're compiling every component on its own instead of using the SCIP Opt Suite Makefile. You should only need the libscipopt.so and the include path of SCIP.<br>
<br>
all the best<br>
Matthias<br>
<br>
<br>
On 25.07.2016 21:29, Matthias Koeppe wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
In case anyone is interested, this Sage ticket shows the workarounds<br>
that I had to use to get it compiled.<br>
<a href="https://trac.sagemath.org/ticket/21094" target="_blank">https://trac.sagemath.org/ticket/21094</a><br>
<br>
On Fri, Jul 15, 2016 at 9:38 AM, Matthias Koeppe<br>
<<a>mkoeppe@math.ucdavis.edu</a>> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I'm trying to make a shared library build of SCIP on Mac OS X with gcc.<br>
Is this supposed to be a supported configuration?<br>
I suspect it is not, because of the error that I get (see below) and<br>
the fact that there is no sign of the "dyld" extension used by Mac OS<br>
X in any of the Makefiles.<br>
Any thoughts?<br>
<br>
<br>
Concretely, I'm using the scipoptsuite 3.2.1 source package and trying<br>
to build within SageMath, which brings its own gcc 4.9.2.<br>
<br>
I'm running:<br>
<br>
make VERBOSE=true SHARED=true USRLDFLAGS="$LDFLAGS"<br>
USRCXXFLAGS="$CXXFLAGS" USRCPPFLAGS="$CPPFLAGS" USRARFLAGS="$LDFLAGS"<br>
<br>
which ends with the following error:<br>
<br>
g++  -L/Users/mkoeppe/cvs/sage/local/lib<br>
-Wl,-rpath,/Users/mkoeppe/cvs/sage/local/lib  -m64 -shared -o<br>
lib/<a href="http://libsoplex-2.2.1.darwin.x86_64.gnu.opt.so" target="_blank">libsoplex-2.2.1.darwin.x86_64.gnu.opt.so</a><br>
obj/O.darwin.x86_64.gnu.opt/lib/changesoplex.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/clufactor.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/clufactor_rational.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/didxset.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/enter.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/gzstream.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/idxset.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/leave.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/mpsinput.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/nameset.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/rational.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/ratrecon.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/slufactor.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/slufactor_rational.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/solverational.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/solvereal.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/soplex.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/soplexlegacy.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxautopr.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxbasis.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxboundflippingrt.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxbounds.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxchangebasis.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxdantzigpr.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxdefaultrt.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxdefines.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxdesc.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxdevexpr.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxequilisc.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxfastrt.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxfileio.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxgeometsc.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxgithash.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxharrisrt.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxhybridpr.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxid.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxlpbase_rational.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxlpbase_real.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxmainsm.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxout.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxparmultpr.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxquality.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxscaler.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxshift.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxsolve.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxsolver.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxstarter.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxsteeppr.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxsumst.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxvecs.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxvectorst.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxweightpr.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxweightst.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/spxwritestate.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/statistics.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/usertimer.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/wallclocktimer.o<br>
obj/O.darwin.x86_64.gnu.opt/lib/updatevector.o<br>
<br>
Undefined symbols for architecture x86_64:<br>
<br>
   "___gmpq_add", referenced from:<br>
<br>
       soplex::Rational::operator+(soplex::Rational const&) const in rational.o<br>
<br>
       soplex::Rational::operator+=(soplex::Rational const&) in rational.o<br>
<br>
       soplex::Rational::operator+(double const&) const in rational.o<br>
<br>
       soplex::Rational::operator+=(double const&) in rational.o<br>
<br>
       soplex::Rational::operator+(int const&) const in rational.o<br>
<br>
       soplex::Rational::operator+=(int const&) in rational.o<br>
<br>
       soplex::Rational::addProduct(soplex::Rational const&,<br>
soplex::Rational const&) in rational.o<br>
<br>
.....<br>
<br>
   "_gzclose", referenced from:<br>
<br>
       gzstream::gzstreambase::~gzstreambase() in gzstream.o<br>
<br>
       gzstream::gzstreambase::~gzstreambase() in gzstream.o<br>
<br>
       gzstream::gzstreambuf::close()     in gzstream.o<br>
<br>
       gzstream::gzstreambase::~gzstreambase() in gzstream.o<br>
<br>
       gzstream::gzstreambase::close()     in gzstream.o<br>
<br>
       gzstream::gzstreambuf::~gzstreambuf() in gzstream.o<br>
<br>
       gzstream::gzstreambuf::~gzstreambuf() in gzstream.o<br>
<br>
       ...<br>
<br>
<br>
It seems to help to add "-lgmp -lz" on this command line.<br>
<br>
<br>
--<br>
Dr. Matthias Koeppe . . . . . . . . . . . <a href="http://www.math.ucdavis.edu/~mkoeppe" target="_blank">http://www.math.ucdavis.edu/~mkoeppe</a><br>
Professor, Mathematics<br>
Chair, Applied Mathematics (Graduate Group) . . <a href="http://appliedmath.ucdavis.edu" target="_blank">http://appliedmath.ucdavis.edu</a><br>
</blockquote>
<br>
<br>
</blockquote>
<br>
-- <br>
\__________________<br>
<br>
Matthias Miltenberger<br>
Zuse Institute Berlin<br>
Takustr. 7, 14195 Berlin<br>
<a href="http://www.zib.de/miltenberger" target="_blank">www.zib.de/miltenberger</a><br>
<a>miltenberger@zib.de</a><br>
+49 (30) 841 85-245<br>
<br>
<br>
</blockquote></div><br><br>-- <br>Sent from my phone<br>