[Coin-discuss] cygwin build

Andreas Waechter andreasw at watson.ibm.com
Tue Aug 15 11:56:27 EDT 2006


Hi,

On Cygwin, currently the COIN makefiles always use the '-mno-cygwin' flag 
when it compiles code.  This is done because then the generated 
executables use the native Windows runtime libraries (not Cygwin1.dll) and 
therefore run also outside the Cygwin environment, i.e. in DOS, which is 
what you probably want when you compile an executable and want to use it 
"natively" in Windows (e.g., the AMPL solver executables).

But this requires that all code, also the code that links with the 
library, is compiled and linked with that flag.  If you use the Makefiles 
in the examples subdirectories, you will see that the flag is there.

It seems that a number of people are not happy with this, since it also 
changes what header files are used etc.  I'm planning to change the 
behavior so that by default the -mno-cygwin flag is not used, but that a 
user can choose --enable-dos-compile (or so) on Cygwin, which would then 
generate a native Windows executable.  I already submitted a BuildTools 
ticket (to myself) and will try to get to it soon.

Andreas


On Tue, 15 Aug 2006, Ted Ralphs wrote:

> Matt,
>
> I ran into similar issues with one of my applications and I believe it
> is caused by the fact that the COIN projects are compiled with the
> -mno-cygwin flag by default. If you just make sure *all* your objects
> files are compiled with this flag, everything should be fine. If this
> isn't an acceptable solution, I believe Andreas is going to add a
> configure option to compile COIN projects without the -mno-cygwin flag.
>
> Cheers,
>
> Ted
>
> Matthew Galati wrote:
>> Is there some special flag that I need to compile/link with for building
>> my application in Cygwin, when linking with the new libs, for example
>> CoinUtils. I am using coin-Cbc. I configure, make, make install fine on
>> both Linux and Cygwin. When I link my application on Linux, it is fine
>> and runs fine. On cygwin, I get the error below. Googling, it seems to
>> be related to the -mno-cygwin flag, but I am not sure what I need to do.
>>
>> Thanks,
>> Matt
>>
>> magala at l11062 ~/DECOMP/apps/TSP
>> $ make --version
>> GNU Make 3.80
>> Copyright (C) 2002  Free Software Foundation, Inc.
>> This is free software; see the source for copying conditions.
>> There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
>> PARTICULAR PURPOSE.
>>
>> magala at l11062 ~/DECOMP/apps/TSP
>> $ gcc -v
>> Reading specs from /usr/lib/gcc/i686-pc-cygwin/3.4.4/specs
>> Configured with: /gcc/gcc-3.4.4/gcc-3.4.4-1/configure --verbose
>> --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --lib
>> dir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man
>> --infodir=/usr/share/info --enable-languages=c,ada,c++,d,f77,
>> java,objc --enable-nls --without-included-gettext
>> --enable-version-specific-runtime-libs --without-x --enable-libgcj --d
>> isable-java-awt --with-system-zlib --enable-interpreter
>> --disable-libgcj-debug --enable-threads=posix --enable-java-gc=b
>> oehm --disable-win32-registry --enable-sjlj-exceptions
>> --enable-hash-synchronization --enable-libstdcxx-debug : (reconfi
>> gured)
>> Thread model: posix
>> gcc version 3.4.4 (cygming special) (gdc 0.12, using dmd 0.125)
>>
>>
>> Creating tsp
>> g++  -I- -Wall -Wpointer-arith -Wcast-qual -Wwrite-strings -Wconversion
>> -pipe -Iinclude -I/home/magala/COIN_NEW/Coin-Cbc
>> /include -I/home/magala/DECOMP/include
>> -I/home/magala/DECOMP/external/boost
>> -I/home/magala/DECOMP/external/concorde/INCL
>> UDE -I/home/magala/DECOMP/external/concorde_i/include -g -DCOIN_USE_CLP
>> -DMODE_DEBUG_FULL -o CYGWIN-g/tsp CYGWIN-g/TSP_M
>> ain.o CYGWIN-g/TSP_DecompApp.o CYGWIN-g/TSP_Util.o
>> CYGWIN-g/TSP_CombCut.o CYGWIN-g/TSP_SubtourCut.o -L/home/magala/COIN_
>> NEW/Coin-Cbc/lib -L/home/magala/DECOMP/lib
>> -L/home/magala/DECOMP/external/concorde/  -lDecomp-g -lUtil-g
>> -lConcordeI-g -
>> lOsiClp -lClp -lconcorde -lCgl -lOsi -lCoinUtils   -lm
>> /home/magala/COIN_NEW/Coin-Cbc/lib/libOsiClp.a(OsiClpSolverInterface.o):
>> In function `_ZN21OsiClpSolverInterface12initia
>> lSolveEv':
>> /home/magala/COIN_NEW/Coin-Cbc/Osi/src/OsiClp/OsiClpSolverInterface.cpp:67:
>> undefined reference to `__assert'
>> /home/magala/COIN_NEW/Coin-Cbc/Osi/src/OsiClp/OsiClpSolverInterface.cpp:111:
>> undefined reference to `__assert'
>> /home/magala/COIN_NEW/Coin-Cbc/Osi/src/OsiClp/OsiClpSolverInterface.cpp:134:
>> undefined reference to `__assert'
>> /home/magala/COIN_NEW/Coin-Cbc/Osi/src/OsiClp/OsiClpSolverInterface.cpp:140:
>> undefined reference to `__assert'
>> /home/magala/COIN_NEW/Coin-Cbc/Osi/src/OsiClp/OsiClpSolverInterface.cpp:149:
>> undefined reference to `__assert'
>> /home/magala/COIN_NEW/Coin-Cbc/lib/libOsiClp.a(OsiClpSolverInterface.o):/home/magala/COIN_NEW/Coin-Cbc/Osi/src/OsiClp/Os
>>
>> iClpSolverInterface.cpp:311: more undefined references to `__assert' follow
>> /home/magala/COIN_NEW/Coin-Cbc/lib/libCoinUtils.a(CoinMessageHandler.o):
>> In function `_ZN18CoinMessageHandlerC2Ev':
>> /home/magala/COIN_NEW/Coin-Cbc/CoinUtils/src/CoinMessageHandler.cpp:329:
>> undefined reference to `__imp___iob'
>> /home/magala/COIN_NEW/Coin-Cbc/lib/libCoinUtils.a(CoinMessageHandler.o):
>> In function `_ZN18CoinMessageHandlerC1Ev':
>> /home/magala/COIN_NEW/Coin-Cbc/CoinUtils/src/CoinMessageHandler.cpp:329:
>> undefined reference to `__imp___iob'
>> /home/magala/COIN_NEW/Coin-Cbc/lib/libCoinUtils.a(CoinMessageHandler.o):
>> In function `_ZN18CoinMessageHandler8printingEb
>> ':
>> /home/magala/COIN_NEW/Coin-Cbc/CoinUtils/src/CoinMessageHandler.cpp:515:
>> undefined reference to `__assert'
>> /home/magala/COIN_NEW/Coin-Cbc/lib/libCoinUtils.a(CoinIndexedVector.o):
>> In function `_ZNK17CoinIndexedVectorixEi':
>> /home/magala/COIN_NEW/Coin-Cbc/CoinUtils/src/CoinIndexedVector.cpp:205:
>> undefined reference to `__assert'
>> /home/magala/COIN_NEW/Coin-Cbc/lib/libCoinUtils.a(CoinIndexedVector.o):
>> In function `_ZN17CoinIndexedVector3addEid':
>> /home/magala/COIN_NEW/Coin-Cbc/CoinUtils/src/CoinIndexedVector.cpp:259:
>> undefined reference to `__assert'
>> /home/magala/COIN_NEW/Coin-Cbc/lib/libCoinUtils.a(CoinIndexedVector.o):
>> In function `_ZN17CoinIndexedVector5cleanEd':
>> /home/magala/COIN_NEW/Coin-Cbc/CoinUtils/src/CoinIndexedVector.cpp:272:
>> undefined reference to `__assert'
>> /home/magala/COIN_NEW/Coin-Cbc/lib/libCoinUtils.a(CoinIndexedVector.o):
>> In function `_ZN17CoinIndexedVector10checkClearE
>> v':
>> /home/magala/COIN_NEW/Coin-Cbc/CoinUtils/src/CoinIndexedVector.cpp:289:
>> undefined reference to `__assert'
>> /home/magala/COIN_NEW/Coin-Cbc/lib/libCoinUtils.a(CoinIndexedVector.o):/home/magala/COIN_NEW/Coin-Cbc/CoinUtils/src/Coin
>>
>> IndexedVector.cpp:290: more undefined references to `__assert' follow
>> /home/magala/COIN_NEW/Coin-Cbc/lib/libCoinUtils.a(CoinFileIO.o): In
>> function `_Z16fileCoinReadableRSs':
>> /home/magala/COIN_NEW/Coin-Cbc/CoinUtils/src/CoinFileIO.cpp:610:
>> undefined reference to `__imp___iob'
>> /home/magala/COIN_NEW/Coin-Cbc/lib/libCoinUtils.a(CoinFileIO.o): In
>> function `_ZN14CoinFileIOBaseC2ERKSs':
>> /home/magala/COIN_NEW/Coin-Cbc/CoinUtils/src/CoinFileIO.cpp:20:
>> undefined reference to `__imp___iob'
>> /home/magala/COIN_NEW/Coin-Cbc/lib/libCoinUtils.a(CoinPresolveMatrix.o):
>> In function `_ZN18CoinPresolveMatrix9setMatrixE
>> PK16CoinPackedMatrix':
>> /home/magala/COIN_NEW/Coin-Cbc/CoinUtils/src/CoinPresolveMatrix.cpp:176:
>> undefined reference to `__assert'
>> /home/magala/COIN_NEW/Coin-Cbc/lib/libCoinUtils.a(CoinPresolveHelperFunctions.o):
>> In function `_Z27presolve_delete_from_
>> major2iiPiS_S_PdS_S_':
>> /home/magala/COIN_NEW/Coin-Cbc/CoinUtils/src/CoinPresolveHelperFunctions.cpp:439:
>> undefined reference to `__assert'
>> /home/magala/COIN_NEW/Coin-Cbc/lib/libCoinUtils.a(CoinPresolveEmpty.o):
>> In function `_ZN22drop_empty_cols_action8presolv
>> eEP18CoinPresolveMatrixPiiPK18CoinPresolveAction':
>> /home/magala/COIN_NEW/Coin-Cbc/CoinUtils/src/CoinPresolveEmpty.cpp:166:
>> undefined reference to `__assert'
>> /home/magala/COIN_NEW/Coin-Cbc/lib/libCoinUtils.a(CoinPresolveEmpty.o):
>> In function `_ZNK22drop_empty_cols_action9postso
>> lveEP19CoinPostsolveMatrix':
>> /home/magala/COIN_NEW/Coin-Cbc/CoinUtils/src/CoinPresolveEmpty.cpp:293:
>> undefined reference to `__assert'
>> /home/magala/COIN_NEW/Coin-Cbc/lib/libCoinUtils.a(CoinPresolveEmpty.o):
>> In function `_ZNK22drop_empty_rows_action9postso
>> lveEP19CoinPostsolveMatrix':
>> /home/magala/COIN_NEW/Coin-Cbc/CoinUtils/src/CoinPresolveEmpty.cpp:485:
>> undefined reference to `__assert'
>> /home/magala/COIN_NEW/Coin-Cbc/lib/libCoinUtils.a(CoinPresolveZeros.o):/home/magala/COIN_NEW/Coin-Cbc/CoinUtils/src/Coin
>>
>> PresolveZeros.cpp:213: more undefined references to `__assert' follow
>> collect2: ld returned 1 exit status
>> make[1]: *** [CYGWIN-g/tsp] Error 1
>> make[1]: Leaving directory `/home/magala/DECOMP/apps/TSP'
>> make: *** [tsp] Error 2
>>
>>
>> _______________________________________________
>> Coin-discuss mailing list
>> Coin-discuss at list.coin-or.org
>> http://list.coin-or.org/mailman/listinfo/coin-discuss
>
>
> -- 
> Dr. Ted Ralphs
> Associate Professor
> Industrial and Systems Engineering
> Lehigh University
> (610)758-4784
> tkralphs at lehigh.edu
> www.lehigh.edu/~tkr2
> _______________________________________________
> Coin-discuss mailing list
> Coin-discuss at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/coin-discuss
>



More information about the Coin-discuss mailing list