X-Recipient: archive-cygwin AT delorie DOT com X-SWARE-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS,TW_HD,TW_LC,TW_LG X-Spam-Check-By: sourceware.org To: cygwin AT cygwin DOT com From: Philipp Kraus Subject: Re: linker error libcygwin Date: Sun, 13 Nov 2011 13:59:03 +0100 Lines: 81 Message-ID: References: <8DB56F04-18E5-43C3-8080-05565BA1531D AT flashpixx DOT de> <4EBC3E14 DOT 9060000 AT sbcglobal DOT net> <4EBC730C DOT 4070701 AT sbcglobal DOT net> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1; format=flowed Content-Transfer-Encoding: 8bit User-Agent: Unison/2.1.5 X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com On 2011-11-13 12:43:37 +0100, Philipp Kraus said: > On 2011-11-11 01:57:48 +0100, Greg Chicares said: > >> On 2011-11-10 21:22Z, Philipp Kraus wrote: >>> On 2011-11-10 22:11:48 +0100, Greg Chicares said: >>> >>>> On 2011-11-10 20:39Z, Kraus Philipp wrote: >>>>> >>>>> undefined reference to `_WinMain AT 16' >>>>> collect2: ld returned 1 exit status >>>> >>>> Does this thread >>>> http://cygwin.com/ml/cygwin/2011-10/threads.html#00440 >>>> contain the answer? >>> >>> no, sorry. >>> >>>> If this is a console application, does it have >>>> an implementation of main()? >>> >>> yes the signature of the main is in this example: >>> int main(int argc, char* argv[]) >> >> Please show the full linker command, and indicate the name of >> the object file that contains main(). > > The full linker command shows (I split the flags for a better reading): > > g++ -o build/target.exe -mconsole -enable-stdcall-fixup -mthread > examples/other/target.o > > -L/usr/local/bin > -L/usr/bin > -L/cygdrive/c/Windows/system32 > -L/cygdrive/c/Windows > -L/cygdrive/c/Windows/system32/Wbem > -L/cygdrive/c/Windows/system32/WindowsPowerShell/v1.0 > "-L/cygdrive/c/Program Files/TortoiseSVN/bin" > "-L/cygdrive/c/Program Files/Java/jdk1.6.0_29/bin" > -L/cygdrive/c/opt/scons/bin > -L/cygdrive/c/opt/library/atlas/3.9.51/lib > -L/cygdrive/c/opt/library/boost/1.47.0/bin > -L/cygdrive/c/opt/library/boost/1.47.0/lib > -L/cygdrive/c/opt/library/cln/1.3.2/lib > -L/cygdrive/c/opt/library/ginac/1.6.1/lib > -L/cygdrive/c/opt/library/hdf/5-1.8.7/lib > -L/cygdrive/c/opt/library/xml2/2.7.8/bin > -L/cygdrive/c/opt/library/xml2/2.7.8/lib > -L/cygdrive/c/opt/library/jsoncpp/0.5.0/lib > > -lboost_system > -lboost_thread > -lboost_iostreams > -lboost_regex > -lboost_program_options > -lboost_exception > -lboost_filesystem > -llapack > -lcblas > -lf77blas > -latlas > -lgfortran > -lhdf5_cpp > -lhdf5 > > I have tested the same call with another example (only the *.cpp / *.o > file changes) and it works. The difference is the cpp code, but > a compiler call run's without an error. I don't understand why > different sources with the same linker command creates different > results. > The linking process should be deterministic, so the compiled object > code creates the same linker calls. I have checked my sources, but some examples must have this preprocessor part: #if defined(_WIN32) || defined(__CYGWIN__) #include #endif and some examples must not have this part (same linker / compiler call) -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple