[CoinBinary] Missing library, building example under MinGW

Ted Ralphs ted at lehigh.edu
Fri Jun 29 16:08:48 EDT 2012


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/

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/

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

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> 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 Cc:
> 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
> 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/20120629/f873b894/attachment-0001.html>


More information about the CoinBinary mailing list