[CoinBinary] Building JNI-based under MinGW

Ted Ralphs ted at lehigh.edu
Thu Jul 26 17:05:15 EDT 2012


Sorry for the delay in responding. I have tried to build 64-bit binaries in
MinGW a few different times and I have failed every time, though the
details of how and why elude me now. My vague impression is that 64-bit
MinGW compiler has always been a bit flaky. The closest I have come is by
using the version of the MinGW compiler suite maintained by the group that
develops "R". They apparently have also run into issues with the 64-bit
version of MinGW gcc (hence the fact that they have their version of the
compiler that they maintain). In the past, I know that the R folks have
successfully built versions of some COIN tools on the 64-bit MinGW platform
using the RTools. I am willing to lend support if you want to give a try to
building 64-bit binaries. If you can figure out the best option for a
64-bitt MinGW gcc suite, I will try building and debugging any problems.

Cheers,

Ted

On Thu, Jul 19, 2012 at 10:15 AM, <acw at ascent.com> wrote:

> With your kind help and advice, we have now succeeded in building our
> application under MinGW against the libraries provided by the CoinBinary
> project, and running it on a 32-bit Windows XP platform.  Using the
> SjLj-based compiler was key; after that there were only minor difficulties
> in getting the compiler options correct to meet the Java Native Interface's
> expectations.
>
> Our next step is to do the same thing on a 64-bit Windows 7 platform.
>  Under http://www.coin-or.org/download/binary/CoinAll/, I had hoped to
> find something like COIN-OR-1.6.0-win64-mingw-gcc..., but I can't see
> anything like that there.
>
> Have the CoinAll binaries been built under MinGW on a 64-bit platform?  Or
> will we have to try to do it from sources?  We would, of course, prefer to
> have binaries.
>
>
>  From: Ted Ralphs <ted at Lehigh.EDU> To: acw at ascent.com Cc:
> CoinBinary at list.coin-or.org Date: 06/29/2012 04:09 PM Subject: Re:
> [CoinBinary] Missing library, building example under MinGW
> ------------------------------
>
>
>
> On the MinGW side, what you are running into is likely an incompatibility
> with compiler versions. I built the MinGW libraries with the only version
> of MinGW GCC that I was ever able to get to reliably build the entire
> CoinAll suite. If I'm not mistaken, the binaries for that version are still
> available here:
> *
> **
> http://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/Previous%20Testing_%20gcc-4.2.1-sjlj%20-2/
> *<http://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/Previous%20Testing_%20gcc-4.2.1-sjlj%20-2/>
>
> I guess that a lot of these problems will go away if you use this version
> of the compiler. A second tip if you want to make sure you are building
> with all the right compiler options and linking all the right libraries is
> to start using pkg-config. It looks as though you can get a stand-alone
> Windows version here:
> *
> **http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/*<http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/>
>
> though I have never tried it. All of the projects have .pc files in
> <install_dir>/lib/pkgconfig. These files contain all dependency
> information, as well as command-line options for the compiler. You can
> easily parse these files by hand, but the dependencies are built up
> recursively, so it takes a little work and pkg-config will do that all for
> you. There is information on how to construct Makefiles that leverage
> pkg-config support here:
> *
> **
> https://projects.coin-or.org/BuildTools/wiki/user-examples#LinkingyourCodewithCOIN-ORLibraries
> *<https://projects.coin-or.org/BuildTools/wiki/user-examples#LinkingyourCodewithCOIN-ORLibraries>
>
> I am not certain that the Applications Template examples have Makefiles
> that include support for pkg-config, but they might. Another alternative is
> that there is a file
>
> <install_dir>/share/coin/doc/XXX/xxx_addlibs.txt
>
> that contains the output of running a pkg-config query for the command
> line options to link to the library of project XXX.
>
> Having said all of that, I think you're better off in the long-run working
> with source and building your own libraries if you know your way around the
> command line (which you seem to). If you build from source, configure will
> produce examples with custom built Makefiles that will work out of the box
> and that you can easily modify to suit your needs. If you download the
> CoinAll source distribution (or better yet, check it out from subversion),
> you will see directories <build_dir>/XXX/examples with automatically
> generated Makefiles that will build the corresponding examples from
> <src_dir>/XXX/examples. I guess we should probably just install the example
> Makefiles and sources along with the distribution...
>
> I have been playing around with getting CoinAll to build with the latest
> and greatest version of the MinGW compilers, but if I recall, my last
> attempt still failed. Most likely, it was due to problems with the Fortran
> compiler, which may not concern you. If you just want Cbc, it should
> probably build fine. If you run into problems with another project like
> Ipopt, then you can set COIN_SKIP_PROJECTS to avoid that one or just get
> the Cbc distribution separately. I am interested in being able to build
> with the latest MinGW compilers myself, so if you are willing to give it a
> go, I will provide as much support as I can.
>
> And yes, all of this information should be on a wiki somewhere and not
> hidden on this low-traffic mailing list :). Hope this helps!
>
> Ted
>
> On Fri, Jun 29, 2012 at 2:24 PM, <*acw at ascent.com* <acw at ascent.com>>
> wrote:
> The Application Templates project looks very helpful, especially if it is
> more up-to-date.  The canned applications referred to in CoinEasy are not
> sufficient for our needs; for reasons that aren't really germane here, we
> have to add some code and call the COIN API, so we have to either build
> from source or compile against libraries.
>
> I don't know if, given the existence of the Applications Template project,
> it makes sense to continue to try to get the "Osiexample" build to
> complete.  I can report the next step, though.  We changed -lCoin to
> -lCoinUtils, and now at least the build does something.  What it does is
> spit out almost 4000 lines of undefined symbol errors.  These are of two
> kinds: there are the gxx_personality/SjLj errors, that indicate a mismatch
> in exception-handling technology; I'm not sure what to do about those.  And
> then there are COIN-internal symbols, which probably indicate that I have
> missing libraries in my LIB_FLAGS.  I'm guessing that new dependencies have
> appeared since this example was promulgated, but I don't know how to figure
> out which libraries to add.  Perhaps the answer to these questions is "Use
> the Application Templates instead; they are less moth-eaten."  Thoughts?
>
>   From: Ted Ralphs <ted at Lehigh.EDU>  To: *acw at ascent.com* <acw at ascent.com>
> Cc: *CoinBinary at list.coin-or.org* <CoinBinary at list.coin-or.org>  Date: 06/29/2012
> 01:03 PM  Subject: Re: [CoinBinary] Missing library, building example
> under MinGW
>
>  ------------------------------
>
>
>
>
> That seems to just be a mistake in the Makefile. It should be CoinUtils.
> There is no libCoin. This zip file is quite old and there have been changes
> that should make some of this easier, such as support for the use of
> pkg-config. Alaos, we have not been very good in general at keeping all of
> this sort of thing up to date and making it obvious and easy how to get
> started. Too much to do and not enough manpower.
>
> A few years back, we started another project called CoinEasy, which was
> supposed to be the single entry point for new users that explained how to
> get started, but as with everything, it has been difficult to to keep it up
> and we have not publicized it well. Nevertheless, it is probably a better
> starting point than what you're working with.*
>
> **https://projects.coin-or.org/CoinEasy*<https://projects.coin-or.org/CoinEasy>
>
> There is a project called "application templates" pointed to on the
> CoinEasy page that has a more complete set of examples, Makefiles, etc. *
>
> **
> https://projects.coin-or.org/CoinBazaar/wiki/Projects/ApplicationTemplates
> *<https://projects.coin-or.org/CoinBazaar/wiki/Projects/ApplicationTemplates>
>
> Please feel free to post additional questions and we'll try to use that as
> motivation to get some of this cleaned up :).
>
> Cheers,
>
> Ted
>
> On Fri, Jun 29, 2012 at 12:46 PM, <*acw at ascent.com* <acw at ascent.com>>
> wrote:
>  I downloaded and installed the CoinAll binary distribution on my generic
> Windows XP desktop.  I installed MinGW first, and chose the MinGW
> distribution on the download page.
>
> The command-line binaries seem to work fine.
>
> But when I try to work the example given on the CoinBinary wiki project
> page, I run into trouble.  In particular I am trying to build the one
> called "Osiexample".  I have MinGW g++, so I'm typing "make -f
> Makefile.Osiexample".  (The NMakefile wants to use the Visual Studio
> compiler.)
>
> I had to adjust COIN_DIR and COIN_INC_DIR a little because the arrangement
> of directories is not exactly the same as the example expects.  This wasn't
> a problem.
>
> My problem is that the build fails looking for the library libCoin.a.  I
> looked in the directory win32-mingw-gcc4.2.1/lib, and it's just not there.
>  CoinMP, yes.  CoinUtils, yes.  Just plain Coin, no.
>
> Does anyone have a suggestion?  Thank you.
> _______________________________________________
> CoinBinary mailing list*
> **CoinBinary at list.coin-or.org* <CoinBinary at list.coin-or.org>*
> **http://list.coin-or.org/mailman/listinfo/coinbinary*<http://list.coin-or.org/mailman/listinfo/coinbinary>
>
>
>
>
> --
> Dr. Ted Ralphs
> Associate Professor, Lehigh University*
> **(610) 628-1280* <%28610%29%20628-1280>
> ted 'at' lehigh 'dot' edu*
> **coral.ie.lehigh.edu/~ted* <http://coral.ie.lehigh.edu/%7Eted>
>
>
>
>
> --
> Dr. Ted Ralphs
> Associate Professor, Lehigh University*
> **(610) 628-1280* <%28610%29%20628-1280>
> ted 'at' lehigh 'dot' edu*
> **coral.ie.lehigh.edu/~ted* <http://coral.ie.lehigh.edu/%7Eted>
>
>


-- 
Dr. Ted Ralphs
Associate Professor, Lehigh University
(610) 628-1280
ted 'at' lehigh 'dot' edu
coral.ie.lehigh.edu/~ted <http://coral.ie.lehigh.edu/%7Eted>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/coinbinary/attachments/20120726/19b5e961/attachment.html>


More information about the CoinBinary mailing list