Boost logo

Boost :

Subject: [boost] Compiling with Clang 3.7.0 from windows
From: Paul A. Bristow (pbristow_at_[hidden])
Date: 2015-09-03 10:02:09


I've downloaded the shiny new Clang 3.7 and added this to my user-config. # 64-bit version
 using clang # from http://llvm.org/releases/download.html
    : # version
      3.7.0
    : # Clang compiler .exe location
    #"C:/LLVM/bin/clang++.exe" # OK
    #"C:\\Program Files (x86)\\LLVM\\bin\\clang++.exe" # OK
    "C:\\Program Files\\LLVM\\bin\\clang++.exe" #
    : # options
  ;

If I compile a simple hello world (no Boost library calls) program using the defaults (jam (using
up-to-date Boost develop branch)

it fails at the link complaining

c:\mingw\bin\ld.exe: unrecognised emulation mode: i386pep
Supported emulations: i386pe

which seems an odd message???

I:\modular-boost\libs\quickdox\example>b2 toolset=clang-3.7.0

Performing configuration checks

    - 32-bit : no (cached)
    - 64-bit : yes (cached)
    - arm : no (cached)
    - mips1 : no (cached)
    - power : no (cached)
    - sparc : no (cached)
    - x86 : yes (cached)
    - symlinks supported : yes (cached)
...found 22 targets...
...updating 4 targets...
clang-linux.compile.c++.without-pth
..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\clang-linux-3.7.0\debug\quick_auto_d
ox_index.obj
clang version 3.7.0 (tags/RELEASE_370/final)
Target: x86_64-w64-windows-gnu
Thread model: posix
 "C:\\Program Files\\LLVM\\bin\\clang++.exe" -cc1 -triple x86_64-w64-windows-gnu -emit-obj
-mrelax-all -disable-free -main-file-name quick_auto_dox_index.cpp -mrelocation-model pic -pic-level
2 -mthread-model posix -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -target-cpu
x86-64 -momit-leaf-frame-pointer -v -g -dwarf-column-info -coverage-file
"I:\\modular-boost\\libs\\quickdox\\example\\..\\..\\..\\bin.v2\\libs\\quickdox\\example\\quick_auto
_dox_index.test\\clang-linux-3.7.0\\debug\\quick_auto_dox_index.obj" -resource-dir "C:\\Program
Files\\LLVM\\bin\\..\\lib\\clang\\3.7.0" -D BOOST_ALL_NO_LIB=1 -I "..\\..\\.." -I "..\\include"
-internal-isystem "c:\\mingw\\mingw32\\include\\c++" -internal-isystem
"c:\\mingw\\mingw32\\include\\c++\\mingw32" -internal-isystem
"c:\\mingw\\mingw32\\include\\c++\\backward" -internal-isystem
"c:\\mingw\\mingw32\\include\\c++\\4.8.1" -internal-isystem
"c:\\mingw\\mingw32\\include\\c++\\4.8.1\\mingw32" -internal-isystem
"c:\\mingw\\mingw32\\include\\c++\\4.8.1\\backward" -internal-isystem
"c:\\mingw\\include\\c++\\4.8.1" -internal-isystem "c:\\mingw\\include\\c++\\4.8.1\\mingw32"
-internal-isystem "c:\\mingw\\include\\c++\\4.8.1\\backward" -internal-isystem
"c:\\mingw\\lib\\gcc\\mingw32\\4.8.1\\include\\c++" -internal-isystem
"c:\\mingw\\lib\\gcc\\mingw32\\4.8.1\\include\\c++\\mingw32" -internal-isystem
"c:\\mingw\\lib\\gcc\\mingw32\\4.8.1\\include\\c++\\backward" -internal-isystem "C:\\Program
Files\\LLVM\\bin\\..\\lib\\clang\\3.7.0\\include" -internal-isystem
"c:\\mingw\\lib\\gcc\\mingw32\\4.8.1\\include" -internal-isystem
"c:\\mingw\\mingw32/sys-root/mingw/include" -internal-isystem
"c:\\mingw\\lib\\gcc\\mingw32\\4.8.1\\include-fixed" -internal-isystem "c:\\mingw\\mingw32\\include"
-internal-isystem "c:\\mingw\\include" -O0 -Wall -fdeprecated-macro -fdebug-compilation-dir
"I:\\modular-boost\\libs\\quickdox\\example" -ferror-limit 19 -fmessage-length 0 -mstackrealign
-fno-use-cxa-atexit -fno-inline -fobjc-runtime=gcc -fcxx-exceptions -fexceptions
-fdiagnostics-show-option -o
"..\\..\\..\\bin.v2\\libs\\quickdox\\example\\quick_auto_dox_index.test\\clang-linux-3.7.0\\debug\\q
uick_auto_dox_index.obj" -x c++ quick_auto_dox_index.cpp
clang -cc1 version 3.7.0 based upon LLVM 3.7.0 default target x86_64-w64-windows-gnu
ignoring nonexistent directory "c:\mingw\mingw32\include\c++"
ignoring nonexistent directory "c:\mingw\mingw32\include\c++\mingw32"
ignoring nonexistent directory "c:\mingw\mingw32\include\c++\backward"
ignoring nonexistent directory "c:\mingw\mingw32\include\c++\4.8.1"
ignoring nonexistent directory "c:\mingw\mingw32\include\c++\4.8.1\mingw32"
ignoring nonexistent directory "c:\mingw\mingw32\include\c++\4.8.1\backward"
ignoring nonexistent directory "c:\mingw\include\c++\4.8.1"
ignoring nonexistent directory "c:\mingw\include\c++\4.8.1\mingw32"
ignoring nonexistent directory "c:\mingw\include\c++\4.8.1\backward"
ignoring nonexistent directory "c:\mingw\mingw32/sys-root/mingw/include"
ignoring nonexistent directory "c:\mingw\mingw32\include"
#include "..." search starts here:
#include <...> search starts here:
 ..\..\..
 ..\include
 c:\mingw\lib\gcc\mingw32\4.8.1\include\c++
 c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\mingw32
 c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\backward
 C:\Program Files\LLVM\bin\..\lib\clang\3.7.0\include
 c:\mingw\lib\gcc\mingw32\4.8.1\include
 c:\mingw\lib\gcc\mingw32\4.8.1\include-fixed
 c:\mingw\include
End of search list.
clang-linux.link
..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\clang-linux-3.7.0\debug\quick_auto_d
ox_index.exe
c:\mingw\bin\ld.exe: unrecognised emulation mode: i386pep
Supported emulations: i386pe
clang++.exe: error: linker command failed with exit code 1 (use -v to see invocation)

    "C:\Program Files\LLVM\bin\clang++.exe" -o
"..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\clang-linux-3.7.0\debug\quick_auto_
dox_index.exe" -Wl,--start-group
"..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\clang-linux-3.7.0\debug\quick_auto_
dox_index.obj" -Wl,-Bstatic -Wl,-Bdynamic -Wl,--end-group -g -m64

...failed clang-linux.link
..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\clang-linux-3.7.0\debug\quick_auto_d
ox_index.exe...
...skipped
<p..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\clang-linux-3.7.0\debug>quick_auto
_dox_index.run for lack of
<p..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\clang-linux-3.7.0\debug>quick_auto
_dox_index.exe...
...failed updating 1 target...
...skipped 2 targets...
...updated 1 target...

If I specify address-model=32, then it runs OK - but still says "64-bit : yes (cached)"
which isn't what I would expect?

I:\modular-boost\libs\quickdox\example>b2 -a toolset=clang-3.7.0 address-model=32

Performing configuration checks

    - 32-bit : no (cached)
    - 64-bit : yes (cached) <<<<<<<<<<<<<<<<<<< ???????????????????

<snip>

[Also example>b2 -a toolset=clang-3.7.0 address-model=64

fails to link as with no address-model specified (so default is 64 bit?)].

Suggestions?

(Have I got the wrong version of mingw? I have others from ming64 - how do I specify to use those?)

Thanks

Paul

---
Paul A. Bristow
Prizet Farmhouse
Kendal UK LA8 8AB
+44 (0) 1539 561830

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk