building X64: fatal error LNK1112: module machine type 'x86' confl icts with target machine type 'x64'

29 views
Skip to first unread message

John Laurence Poole

unread,
Aug 8, 2019, 4:16:13 PM8/8/19
to TortoiseSVN
I successfully built the 32 bit version following the excellent instructions in [root]/build.txt.

I am now attempting to build the 64 bit.  I am running into an error in the Apache Portable Runtime module:

D:\work\TortoiseSVN\version-1.12.2>nant x64 setup
NAnt 0.92 (Build 0.92.4543.0; release; 6/9/2012)
Copyright (C) 2001-2012 Gerry Shaw
http://nant.sourceforge.net

Buildfile: file:///D:/work/TortoiseSVN/version-1.12.2/default.build
Target framework: Microsoft .NET Framework 4.0
Target(s) specified: x64 setup


x64:


VSNET:


env:


Subversion:

     [nant] D:\work\TortoiseSVN\version-1.12.2\ext\build\OpenSSL.build OpenSSL
            Buildfile: file:///D:/work/TortoiseSVN/version-1.12.2/ext/build/Open
SSL.build
            Target framework: Microsoft .NET Framework 4.0
            Target(s) specified: OpenSSL


            clean:


            OpenSSL:

                 [exec] Configuring OpenSSL version 1.1.1c (0x1010103fL) for VC-
WIN64A
                 [exec] Using os-specific seed configuration
                 [exec] Creating configdata.pm
                 [exec] Creating makefile
                 [exec]
                 [exec] ********************************************************
**************
                 [exec] ***
           ***
                 [exec] ***   OpenSSL has been successfully configured
           ***
                 [exec] ***
           ***
                 [exec] ***   If you encounter a problem while building, please
open an    ***
                 [exec] ***   issue on GitHub <https://github.com/openssl/openss
l/issues>  ***
                 [exec] ***   and include the output from the following command:
           ***
                 [exec] ***
           ***
                 [exec] ***       perl configdata.pm --dump
           ***
                 [exec] ***
           ***
                 [exec] ***   (If you are new to OpenSSL, you might want to cons
ult the    ***
                 [exec] ***   'Troubleshooting' section in the INSTALL file firs
t)         ***
                 [exec] ***
           ***
                 [exec] ********************************************************
**************
                 [exec]
                 [exec] Microsoft (R) Program Maintenance Utility Version 14.22.
27905.0
                 [exec] Copyright (C) Microsoft Corporation.  All rights reserve
d.
                 [exec]
                 [exec]  "C:\Strawberry32\perl\bin\perl.exe" "-I." -Mconfigdata
"..\util\dofile.pl"  "-omakefile" "..\crypto\include\internal\bn_conf.h.in" > cr
ypto\include\internal\bn_conf.h
                 [exec]  "C:\Strawberry32\perl\bin\perl.exe" "-I." -Mconfigdata
"..\util\dofile.pl"  "-omakefile" "..\crypto\include\internal\dso_conf.h.in" > c
rypto\include\internal\dso_conf.h
                 [exec]  "C:\Program Files (x86)\Microsoft Visual Studio\2019\Co
mmunity\VC\Tools\MSVC\14.22.27905\bin\HostX86\x86\nmake.exe" /
 depend && "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Too
ls\MSVC\14.22.27905\bin\HostX86\x86\nmake.exe" /                   _build_libs
                 [exec]
                 [exec] Microsoft (R) Program Maintenance Utility Version 14.22.
27905.0
                 [exec] Copyright (C) Microsoft Corporation.  All rights reserve
d.
                 [exec]
                 [exec]
                 [exec] Microsoft (R) Program Maintenance Utility Version 14.22.
27905.0
                 [exec] Copyright (C) Microsoft Corporation.  All rights reserve
d.
                 [exec]
                 [exec]  "C:\Strawberry32\perl\bin\perl.exe" "..\util\mkbuildinf
.pl" "cl /Zi /Fdossl_static.pdb /MD /Zl /Gs0 /GF /Gy /W3 /wd4090 /nologo /O2 -D"
L_ENDIAN" -D"OPENSSL_PIC" -DOPENSSL_SSL_CLIENT_ENGINE_AUTO=capi -DOPENSSL_CAPIEN
G_DIALOG" "VC-WIN64A" > crypto\buildinf.h
                 [exec]  cl  /Zi /Fdossl_static.pdb /MD /Zl /Gs0 /GF /Gy /W3 /wd
4090 /nologo /O2 /I "." /I "crypto\include" /I "include" /I "crypto" /I ".." /I
"..\crypto\include" /I "..\include" -D"L_ENDIAN" -D"OPENSSL_PIC" -D"OPENSSLDIR=\
"C:\\Program Files\\Common Files\\SSL\"" -D"ENGINESDIR=\"D:\\work\\TortoiseSVN\\
version-1.12.2\\ext\\build\\ext\\openssl\\out64\\lib\\engines-1_1\"" -D"OPENSSL_
SYS_WIN32" -D"WIN32_LEAN_AND_MEAN" -D"UNICODE" -D"_UNICODE" -D"_CRT_SECURE_NO_DE
PRECATE" -D"_WINSOCK_DEPRECATED_NO_WARNINGS" -D"NDEBUG" -DOPENSSL_SSL_CLIENT_ENG
INE_AUTO=capi -DOPENSSL_CAPIENG_DIALOG -c /Focrypto\cversion.obj "..\crypto\cver
sion.c"
                 [exec] cversion.c
                 [exec]  cl  /Zi /Fdossl_static.pdb /MD /Zl /Gs0 /GF /Gy /W3 /wd
4090 /nologo /O2 /I "." /I "crypto\include" /I "include" /I "crypto" /I ".." /I
"..\crypto\include" /I "..\include" -D"L_ENDIAN" -D"OPENSSL_PIC" -D"OPENSSLDIR=\
"C:\\Program Files\\Common Files\\SSL\"" -D"ENGINESDIR=\"D:\\work\\TortoiseSVN\\
version-1.12.2\\ext\\build\\ext\\openssl\\out64\\lib\\engines-1_1\"" -D"OPENSSL_
SYS_WIN32" -D"WIN32_LEAN_AND_MEAN" -D"UNICODE" -D"_UNICODE" -D"_CRT_SECURE_NO_DE
PRECATE" -D"_WINSOCK_DEPRECATED_NO_WARNINGS" -D"NDEBUG" -DOPENSSL_SSL_CLIENT_ENG
INE_AUTO=capi -DOPENSSL_CAPIENG_DIALOG /Zs /showIncludes "..\crypto\cversion.c"
2>&1 > crypto\cversion.d
                 [exec]  lib /nologo /out:libcrypto.lib @C:\Users\jlpoole\AppDat
a\Local\Temp\nmE2E5.tmp
                 [copy] Copying 1 file to 'D:\work\TortoiseSVN\version-1.12.2\ex
t\openssl\include\openssl'.

            BUILD SUCCEEDED - 0 non-fatal error(s), 12 warning(s)

            Total time: 6.8 seconds.

     [nant] D:\work\TortoiseSVN\version-1.12.2\ext\build\default.build build
            Buildfile: file:///D:/work/TortoiseSVN/version-1.12.2/ext/build/defa
ult.build
            Target framework: Microsoft .NET Framework 4.0
            Target(s) specified: build


            clean:


            build:

                 [nant] D:\work\TortoiseSVN\version-1.12.2\ext\build\apr.build b
uild
                        Buildfile: file:///D:/work/TortoiseSVN/version-1.12.2/ex
t/build/apr.build
                        Target framework: Microsoft .NET Framework 4.0
                        Target(s) specified: build


                        clean:


                        build:

                             [copy] Copying 1 file to 'D:\work\TortoiseSVN\versi
on-1.12.2\ext\apr\include\arch\win32\apr_arch_poll_private.h'.
                               [cl] Compiling 28 files to 'D:\work\TortoiseSVN\v
ersion-1.12.2\ext\apr\release_x64'.
                               [cl] sockaddr.c
                               [cl] apr_atomic.c
                               [cl] apr_escape.c
                               [cl] dir.c
                               [cl] filepath.c
                               [cl] filestat.c
                               [cl] filesys.c
                               [cl] proc_mutex.c
                               [cl] thread_cond.c
                               [cl] thread_mutex.c
                               [cl] thread_rwlock.c
                               [cl] apr_pools.c
                               [cl] otherchild.c
                               [cl] charset.c
                               [cl] env.c
                               [cl] rand.c
                               [cl] utf8.c
                               [cl] mmap.c
                               [cl] common.c
                               [cl] poll.c
                               [cl] pollset.c
                               [cl] select.c
                               [cl] wakeup.c
                               [cl] apr_cpystrn.c
                               [cl] apr_cstr.c
                               [cl] apr_snprintf.c
                               [cl] apr_strings.c
                               [cl] apr_strtok.c
                             [link] Linking 69 files.
                             [link] D:\work\TortoiseSVN\version-1.12.2\ext\apr\r
elease_x64\apr_atomic.obj : fatal error LNK1112: module machine type 'x86' confl
icts with target machine type 'x64'


                        BUILD FAILED

                        D:\work\TortoiseSVN\version-1.12.2\ext\build\apr.build(2
35,6):
                        External Program Failed: link (return code was 1112)

                        Total time: 1.2 seconds.


            BUILD FAILED

            Nested build failed.  Refer to build log for exact reason.

            Total time: 1.2 seconds.


BUILD FAILED

Nested build failed.  Refer to build log for exact reason.

Total time: 8.1 seconds.


D:\work\TortoiseSVN\version-1.12.2>

I opened a DOS shell from within Visual Studio 2019 using Tools-Command Line-Developer Command Prompt.  I had the Solution "Tortoise SVN" opened and the compile settings set to Release and X64 just in case the command prompt shell was contextually related.

I had to modify my session to pick up NANT and Python:

set PATH=F:\Downloads\SourceForge\Nant\nant-0.92\bin;%PATH%
set PATH=C:\Python27;%PATH%
nant x64 setup


I tried using my existing Tortoise SVN client to clean up and update the D:\work\TortoiseSVN\version-1.12.2\ext\apr folder, nothing was reported out as being deleted.  Attempt to commit confirmed nothing has been changed.  Perhaps I'm not in a proper X64 shell?

Stefan

unread,
Aug 8, 2019, 4:31:21 PM8/8/19
to TortoiseSVN
The error "module machine type 'x86' conflicts with target machine type 'x64'" usually indicates a mismatch of the build command and the shell you've opened.

So, for an x64 build, you first have to open the x64 VS command shell (that one is different than the default one, there are more than one in the start menu of Windows).

and then you have to use the 'x64' modifier in the build command:

nant x64 setup

not just

nant setup

John Laurence Poole

unread,
Aug 8, 2019, 4:47:09 PM8/8/19
to TortoiseSVN

<sigh> the Microsoft contextual paradigm is so perplexing.  I did not realize that the various command prompts existed, i just launch Visual Studio 2019 and expected whatever is available would be exposed therein.


Further, what is telling is the line "Environment initialized for: 'x64'" that appears at the opening of the shell:


**********************************************************************
** Visual Studio 2019 Developer Command Prompt v16.2.1
** Copyright (c) 2019 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'


Thank you

 
Reply all
Reply to author
Forward
0 new messages