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

Problem: Installing Intel Composer Studio XE 2013 on LinuxMint 15 64-bit without ia32-libs

Michael_B_20
Beginner
366 Views

Problem: I am trying to install on a LinuxMint 15 (Olivia) 64-bit System (Ubuntu derivate) that does not support ia32-libs any more. Naturally, this results in Intel C only working for 64-Bit compilation, since libc6:i386 can't be found. The installation of intel C works fine for 64-bit, but fails compiling for 32-bit: Some headers can't be found by icc.

Alltough ia32-libs is still installable (...which I did already!), my system does not recognize the 32-bit libs from ia32-libs (other apps using 32-bit, e.g wine, are working!)

Is there a workaround to make Intel C aware of the 32-bit libs? any help apreciated! :)

kind regards,

Michael

0 Kudos
1 Solution
TimP
Honored Contributor III
366 Views

You would need to start out by getting a full combined 32-/64-bit installation of g++ such that g++ -m32 works. icc ia32 depends on several libraries provided by g++ -m32 and may use g++ -m32 to locate the headers, even if g++ -m64 knows where they are.

If you don't have access to a repository which includes pre-built 32-bit g++, it might be possible (as it is on standard linux) to install glibc-devel.i686 (if it's not included in ia32-libs) and then build g++ for both 32- and 64-bit from source.  g++ 4.7 is supported by xe2013 versions of icpc (the final one would be preferable).  More support for g++ 4.8 is in xe2013 sp1; again you should use the last update if you choose that.

Evidently, it is becoming more of a hassle to support 32-bit development.  The upcoming releases of Intel MPI already appear to be dropping 32-bit support, in view of lack of demand.

View solution in original post

0 Kudos
2 Replies
TimP
Honored Contributor III
367 Views

You would need to start out by getting a full combined 32-/64-bit installation of g++ such that g++ -m32 works. icc ia32 depends on several libraries provided by g++ -m32 and may use g++ -m32 to locate the headers, even if g++ -m64 knows where they are.

If you don't have access to a repository which includes pre-built 32-bit g++, it might be possible (as it is on standard linux) to install glibc-devel.i686 (if it's not included in ia32-libs) and then build g++ for both 32- and 64-bit from source.  g++ 4.7 is supported by xe2013 versions of icpc (the final one would be preferable).  More support for g++ 4.8 is in xe2013 sp1; again you should use the last update if you choose that.

Evidently, it is becoming more of a hassle to support 32-bit development.  The upcoming releases of Intel MPI already appear to be dropping 32-bit support, in view of lack of demand.

0 Kudos
Michael_B_20
Beginner
366 Views

Thanks for your advice, Tim.


I reinstalled gcc4.7-multilib (which installs glibc6-32) and tested a simple console app with gcc -m32 (was not working before...) - it worked. Doing the same with icc, the problem still is the same. while compiling with icc -m64 works, -m32 produces this:

bergmann@fatboy:~/Projekte/C++/woche_2/tag_1 > icc -m32 zeiger.cpp -o zeigeri32
In file included from zeiger.cpp(1):
/usr/include/c++/4.7/iostream(39): catastrophic error: cannot open source file "bits/c++config.h"
  #include <bits/c++config.h>
                             ^
compilation aborted for zeiger.cpp (code 4)

Do I have to reinstall xe2013 or is it really the hard way - compile gcc for both architectures by hand?

regards,

Michael

0 Kudos
Reply