Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.

Problems with building Boost on Windows with Intel C++ Compiler

Chris_W_
Beginner
1,226 Views

Hello,

I am trying to build Boost 1.55 on Windows with the instructions I found here:

https://software.intel.com/en-us/articles/building-boost-with-intel-c-composer-xe-2013-on-windows-7

So after I do the bootstrap from the Intel cmd prompt, I do:

D:\vs2013 projects\boost_1_55_0>bjam toolset=intel address-model=32

I get a ton of errors like this:

-------------------------------------------------------------------------------------------------------------
call "C:\Program Files (x86)\Intel\composer xe 2013 sp1\bin\intel64//iclvars
.bat" > nul
icl @"bin.v2\libs\chrono\build\intel-win\debug\address-model-32\link-static\thre
ading-multi\thread_clock.obj.rsp"

...failed compile-c-c++ bin.v2\libs\chrono\build\intel-win\debug\address-model-3
2\link-static\threading-multi\thread_clock.obj...
compile-c-c++ bin.v2\libs\chrono\build\intel-win\debug\address-model-32\link-sta
tic\threading-multi\process_cpu_clocks.obj
'"C:\Program Files (x86)\Intel\composer xe 2013 sp1\bin\intel64//iclvars.bat"' i
s not recognized as an internal or external command,
operable program or batch file.
process_cpu_clocks.cpp
Command-line error: invalid Microsoft version number: 89

compilation aborted for libs\chrono\src\process_cpu_clocks.cpp (code 4)
-------------------------------------------------------------------------------------------------------------

I noticed that the iclvars.bat is not in the directory "C:\Program Files (x86)\Intel\composer xe 2013 sp1\bin\intel64" as it is in one directory back at "C:\Program Files (x86)\Intel\composer xe 2013 sp1\bin", so I made a copy of it and put it in the intel64 directory and ran again. I still get errors:

-------------------------------------------------------------------------------------------------------------

compile-c-c++ bin.v2\libs\atomic\build\intel-win\debug\address-model-32\link-sta
tic\threading-multi\lockpool.obj
lockpool.cpp
Command-line error: invalid Microsoft version number: 89

compilation aborted for libs\atomic\src\lockpool.cpp (code 4)

    call "C:\Program Files (x86)\Intel\composer xe 2013 sp1\bin\intel64//iclvars
.bat" > nul
icl @"bin.v2\libs\atomic\build\intel-win\debug\address-model-32\link-static\thre
ading-multi\lockpool.obj.rsp"

...failed compile-c-c++ bin.v2\libs\atomic\build\intel-win\debug\address-model-3
2\link-static\threading-multi\lockpool.obj...
...skipped <pbin.v2\libs\atomic\build\intel-win\debug\address-model-32\link-stat
ic\threading-multi>libboost_atomic-iw-mt-gd-1_55.lib for lack of <pbin.v2\libs\a
tomic\build\intel-win\debug\address-model-32\link-static\threading-multi>lockpoo
l.obj...
...skipped <pstage\lib>libboost_atomic-iw-mt-gd-1_55.lib for lack of <pbin.v2\li
bs\atomic\build\intel-win\debug\address-model-32\link-static\threading-multi>lib
boost_atomic-iw-mt-gd-1_55.lib...
compile-c-c++ bin.v2\libs\system\build\intel-win\debug\address-model-32\link-sta
tic\threading-multi\error_code.obj
error_code.cpp
Command-line error: invalid Microsoft version number: 89

compilation aborted for libs\system\src\error_code.cpp (code 4)
----------------------------------------------------------------------------------------------------------------

Anyone know what the invalid Microsoft version number means? Anyone know what I am doing wrong?

Thanks!
Chris

 

0 Kudos
13 Replies
Judith_W_Intel
Employee
1,226 Views

 

I don't know what you are doing wrong, but that diagnostic is given because the Intel driver (icl.exe) tries to figure out what version of the Microsoft compiler (the cl.exe in your PATH) you are using. It looks like in your case you are using MSVC++ 2013. This has a version number of 1800 not 89.  The Microsoft version can be seen by looking at the logo or via the _MSC_VER macro.

!% cl -V
Microsoft (R) C/C++ Optimizing Compiler Version 18.00.21005.1 for x64    <--- version numbers we support are between 700 and 2000
Copyright (C) Microsoft Corporation.  All rights reserved.

The diagnostic checks for valid versions:

        if (microsoft_version < 700 || microsoft_version > 2000) {
          str_command_line_error(ec_cl_invalid_microsoft_version, opt_arg);
        }  /* if */

Questions:

Does icl work if you try to just compile a simple file on the command line?

Did you install the intel 64 version or the ia32 version of the compiler? Which architecture are you using?

Maybe our Boost expert Jennifer Jiang can be of help here. I'll ping her.

Judy

 

0 Kudos
JenniferJ
Moderator
1,226 Views

The way you're trying to set up the ICL env is wrong: "[icl-install-dir]\bin\intel64\iclvars.bat" does not exist.

If you use VS2012, use ""C:\Program Files (x86)\Intel\Composer XE 2013 SP1\bin\ipsxe-comp-vars.bat" intel64 vs2012"

If you use VS2013, use ""C:\Program Files (x86)\Intel\Composer XE 2013 SP1\bin\ipsxe-comp-vars.bat" intel64 vs2013"

Then build the boost.

Thanks,

Jennifer

0 Kudos
Chris_W_
Beginner
1,226 Views

Hello Judy!

Thanks for the reply. Sorry I am a bit of a newbie here. My answers to your questions:

1. I have never just tried to compile one file. What is the syntax for using icl to compile a simple file? Do I use the same window to do that?

2. I am using Windows 7 64-bit. I installed this file: c_studio_xe_2013_sp1_update3_setup.exe

Sorry I am so new to this.

Thanks,

Chris

 

0 Kudos
Chris_W_
Beginner
1,226 Views

Hello Jennifer,

Thanks for the reply. I am using VS2013. I was following the directions from this page:

https://software.intel.com/en-us/articles/building-boost-with-intel-c-composer-xe-2013-on-windows-7

At what step exactly do I execute:

""C:\Program Files (x86)\Intel\Composer XE 2013 SP1\bin\ipsxe-comp-vars.bat" intel64 vs2013"

??

When do I do that?

Thanks!
Chris

0 Kudos
JenniferJ
Moderator
1,226 Views

Ok. So you've done the step "2" on the article, right?

if so, you don't need to call the "iclvars.bat" or the "ipsxe-comp-vars.bat". Only need to build the boost using the cmd:

>> bjam toolset=intel

why passing "address-model=32"? From the "dir" you're trying to call "iclvars.bat", you're trying to build for intel64. If you've set up the env for intel64, you should use "address-model=64".

Jennifer

0 Kudos
Judith_W_Intel
Employee
1,226 Views

 

Hopefully you don't need this info but the way you compile a file on the command line is just create an empty file (let's call it foo.c) and type:

icl -c foo.c

Any window that has the compiler (icl.exe) in your PATH should work.

Judy

0 Kudos
Chris_W_
Beginner
1,226 Views

Hello Jennifer,

Yes I did step 2. I was trying to build 32-bit versions of boost to work with my 32-bit applications. Still, when I just execute "bjam toolset=intel" I get the same iclvars.bat errors. I am not calling it directly.. the bjam must be calling it?

Any idea what is wrong?

Thanks!
Chris

 

 

0 Kudos
JenniferJ
Moderator
1,226 Views

For building ia32 boost, the step 2 needs a little change: see the change in bold.

2. Run console and set up Intel C++ environment variables using the shortcut from the start menu (Start ->All Programs->Intel Parallel Studio XE 2013->Command Prompt-> Parallel Studio XE with Intel Compiler XE v13.1 Update 3 -> IA-32 Visual Studio 2010 mode)

Jennifer

0 Kudos
Chris_W_
Beginner
1,226 Views

Hello Jennifer,

I want to thank you for not giving up on me. I ran the command just as you suggested, I then changed directory to my boost 1.55 install and typed:

bootstrap

and then

bjam toolset=intel

I get a "link.jam file not found" error.. and then a bunch of the same errors I got before. Here is a brief sample:

-----------------------------------------------------------------------------------------------------------------
compilation aborted for libs\wave\src\cpplexer\re2clex\aq.cpp (code 4)

    call "C:\Program Files (x86)\Intel\composer xe 2013 sp1\bin\ia32//iclvars.ba
t" > nul
icl @"bin.v2\libs\wave\build\intel-win\release\link-static\threading-multi\cpple
xer\re2clex\aq.obj.rsp"

...failed compile-c-c++ bin.v2\libs\wave\build\intel-win\release\link-static\thr
eading-multi\cpplexer\re2clex\aq.obj...
compile-c-c++ bin.v2\libs\wave\build\intel-win\release\link-static\threading-mul
ti\cpplexer\re2clex\cpp_re.obj
'"C:\Program Files (x86)\Intel\composer xe 2013 sp1\bin\ia32//iclvars.bat"' is n
ot recognized as an internal or external command,
operable program or batch file.
cpp_re.cpp
Command-line error: invalid Microsoft version number: 89

compilation aborted for libs\wave\src\cpplexer\re2clex\cpp_re.cpp (code 4)

    call "C:\Program Files (x86)\Intel\composer xe 2013 sp1\bin\ia32//iclvars.ba
t" > nul
icl @"bin.v2\libs\wave\build\intel-win\release\link-static\threading-multi\cpple
xer\re2clex\cpp_re.obj.rsp"

...failed compile-c-c++ bin.v2\libs\wave\build\intel-win\release\link-static\thr
eading-multi\cpplexer\re2clex\cpp_re.obj...
...skipped <pbin.v2\libs\wave\build\intel-win\release\link-static\threading-mult
i>libboost_wave-iw-mt-1_55.lib for lack of <pbin.v2\libs\wave\build\intel-win\re
lease\link-static\threading-multi>instantiate_cpp_exprgrammar.obj...
...skipped <pstage\lib>libboost_wave-iw-mt-1_55.lib for lack of <pbin.v2\libs\wa
ve\build\intel-win\release\link-static\threading-multi>libboost_wave-iw-mt-1_55.
lib...
...failed updating 406 targets...
...skipped 284 targets...

D:\vs2013 projects\boost_1_55_0>
-----------------------------------------------------------------------------------------------------------------

Any idea why it is looking for iclvars.bat in that directory? Any idea what is going wrong here?

Thanks!
Chris

 

 

0 Kudos
TimP
Honored Contributor III
1,226 Views

The exact path for iclvars.bat (and the rest of the Intel C++ installation) differs among the Cluster Studio, parallel Studio , and the plain Intel C++ license version.  Various versions of the path have been mentioned in this thread.  I wouldn't be surprised if you have a script somewhere or have read advice which needs to be adjusted according to which version you have installed.  In recent versions, including those you mentioned, it would not matter whether you chose iclvars.bat or compilervars.bat.

0 Kudos
Chris_W_
Beginner
1,226 Views

Hello Tim,

I don't understand what you mean by " it would not matter whether you chose iclvars.bat or compilervars.bat"

I don't explicitly choose any of them. I am just executing "bootstrap" then "bjam toolset=intel". Can anyone explain *exactly* what I need to do to get boost to build?

Thanks,

Chris

0 Kudos
Chris_W_
Beginner
1,226 Views

By the way I am using Intel C++ Studio for students.

0 Kudos
Chris_W_
Beginner
1,226 Views

This seems to be a boost error. As it stands, I don't think boost builds with the Intel C++ compiler.

I think this problem goes back quite a few versions to at least 1.46. Here is a bug report on the boost site:
 
https://svn.boost.org/trac/boost/ticket/5305#comment:9
0 Kudos
Reply