harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Oliver Deakin <oliver.dea...@googlemail.com>
Subject Re: [build] Update on my build progress
Date Mon, 22 Oct 2007 15:37:49 GMT
Hi Dims,

Looks like you're doing pretty well, that's quite far into the native 
build! Interestingly, when I build the natives with MSVC .NET 2003 I 
also get the warning:
LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other 
libs; use /NODEFAULTLIB:library

but it is not an error and the build continues, so I wonder if it has 
been promoted to an error for MSVC 2005. I looked at your link line and 
it is exactly the same as mine (which works) so Im guessing its a 
difference between linker versions. Having a google around it appears 
that libcmt.lib is the static version of the C runtime, whereas we want 
to link against the dynamic version msvcrt.lib. It's not entirely clear 
to me why it seems to be linking against both msvcrt.lib and libcmt.lib.

If you specify /NODEFAULTLIB:"libcmt.lib" in rules.mak does this help? 
Adding it to the two "link" lines should do the job I think - i.e. the 
link line for DLLNAME and the link line for EXENAME. Adding this option 
to my .NET 2003 build doesn't seem to affect the build, and I can run 
the LUNI tests successfully so it doesn't appear to hurt.

I wonder if we should have this flag always set so that we definitely 
don't link against the static C runtime library?

Regards,
Oliver

Davanum Srinivas wrote:
> Folks,
>
> Neex your help. Platform is Windows XP. Please see enclosed diff for
> the changes i had to make to get this far.
>
> Products:
> - Microsoft Platform SDK for Windows Server 2003 R2
> - Microsoft Visual C++ 2005 Express Edition
> - Microsoft Macro Assembler 8.0 (MASM) Package (x86) /
>
> Current failure:
>
>      [exec]     link  /debug /opt:icf /opt:ref /INCREMENTAL:NO /NOLOGO
>  -entry:_DllMainCRTStartup@12 -dll /BASE:0x13300000 -machine:i386
> /comment:"LCMM Wrapper native code. (c) Copyright 2005 - 2006 The
> Apache Software Foundation or its licensors, a
> s applicable."  -subsystem:windows -out:..\lcmm.dll -map:..\lcmm.map
> ..\shared\cmmerror.obj  ..\shared\cmmio.obj  ..\shared\
> cmmxforms.obj  ..\shared\NativeCMM.obj
> ..\shared\NativeImageFormat.obj lcmm.res
> C:\APACHE\harmony\working_classlib\deploy\li
> b\hycommon.lib C:\APACHE\harmony\working_classlib\deploy\lib\hythr.lib
> C:\APACHE\harmony\working_classlib\deploy\lib\hysig.li
> b  C:\APACHE\harmony\working_classlib\deploy\lib\hypool.lib
> C:\APACHE\harmony\working_classlib\deploy\lib\vmi.lib C:\APACHE\h
> armony\working_classlib\deploy\..\depends\libs\build\lcms\lcms114.lib
> ws2_32.lib Iphlpapi.lib  kernel32.lib  ws2_32.lib advap
> i32.lib user32.lib gdi32.lib  comdlg32.lib winspool.lib
> C:\APACHE\harmony\working_classlib\deploy\lib\lcmm.exp
>      [exec] LINK : warning LNK4224: /COMMENT is no longer supported;  ignored
>      [exec] LIBCMT.lib(crtheap.obj) : error LNK2005: __malloc_crt
> already defined in MSVCRT.lib(MSVCR80.dll)
>      [exec] LIBCMT.lib(crt0dat.obj) : error LNK2005: __amsg_exit
> already defined in MSVCRT.lib(MSVCR80.dll)
>      [exec] LIBCMT.lib(crt0dat.obj) : error LNK2005: __initterm_e
> already defined in MSVCRT.lib(MSVCR80.dll)
>      [exec] LIBCMT.lib(crt0dat.obj) : error LNK2005: _exit already
> defined in MSVCRT.lib(MSVCR80.dll)
>      [exec] LIBCMT.lib(realloc.obj) : error LNK2005: _realloc already
> defined in MSVCRT.lib(MSVCR80.dll)
>      [exec] LIBCMT.lib(crt0init.obj) : error LNK2005: ___xi_a already
> defined in MSVCRT.lib(cinitexe.obj)
>      [exec] LIBCMT.lib(crt0init.obj) : error LNK2005: ___xi_z already
> defined in MSVCRT.lib(cinitexe.obj)
>      [exec] LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_a already
> defined in MSVCRT.lib(cinitexe.obj)
>      [exec] LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_z already
> defined in MSVCRT.lib(cinitexe.obj)
>      [exec] LIBCMT.lib(winxfltr.obj) : error LNK2005: ___CppXcptFilter
> already defined in MSVCRT.lib(MSVCR80.dll)
>      [exec] LIBCMT.lib(tidtable.obj) : error LNK2005: __encode_pointer
> already defined in MSVCRT.lib(MSVCR80.dll)
>      [exec] LIBCMT.lib(tidtable.obj) : error LNK2005: __encoded_null
> already defined in MSVCRT.lib(MSVCR80.dll)
>      [exec] LIBCMT.lib(tidtable.obj) : error LNK2005: __decode_pointer
> already defined in MSVCRT.lib(MSVCR80.dll)
>      [exec] LIBCMT.lib(mlock.obj) : error LNK2005: __unlock already
> defined in MSVCRT.lib(MSVCR80.dll)
>      [exec] LIBCMT.lib(mlock.obj) : error LNK2005: __lock already
> defined in MSVCRT.lib(MSVCR80.dll)
>      [exec] LIBCMT.lib(stricmp.obj) : error LNK2005: __stricmp already
> defined in MSVCRT.lib(MSVCR80.dll)
>      [exec] LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with
> use of other libs; use /NODEFAULTLIB:library
>      [exec] LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with
> use of other libs; use /NODEFAULTLIB:library
>      [exec] LIBCMT.lib(crt0.obj) : error LNK2019: unresolved external
> symbol _main referenced in function ___tmainCRTStartup
>      [exec] ..\lcmm.dll : fatal error LNK1120: 1 unresolved externals
>      [exec] NMAKE : fatal error U1077: '"C:\Program Files\Microsoft
> Visual Studio 8\VC\BIN\link.EXE"' : return code '0x460'
>      [exec] Stop.
>
> Any ideas?
>
> thanks,
> dims
>
>   

-- 
Oliver Deakin
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 741598. 
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU


Mime
View raw message