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

Programs installed in the compiler's ia32 directory are not 32-bit

Mick_Pont
Beginner
407 Views

Some of the programs in the ia32 directory installed with recent
compiler versions are 64-bit programs, presumably by accident.

For example:

  % source /opt/intel/compilers_and_libraries_2016.1.150/linux/bin/compilervars.csh ia32
  % cd /opt/intel/compilers_and_libraries_2016.1.150/linux/bin/ia32
  % file ifort

  produces
    ifort: ELF 32-bit LSB executable, Intel 80386, ...

  but
  % file icc produces
    icc: ELF 64-bit LSB executable, x86-64, ...

So, on a machine with a 32-bit version of Linux installed, ifort works correctly
but icc does not work:

  icc: Exec format error. Wrong Architecture.

Using the "file" command on all the files in the ia32 directory shows
that 10 out of 17 files are 64-bit.

Mick Pont

 

0 Kudos
8 Replies
Kevin_D_Intel
Employee
407 Views

Thank you for notifying us about this. I will check into this and post after I know more.

0 Kudos
Kevin_D_Intel
Employee
407 Views

I performed a variety of installations. From those I confirmed that on a 32-bit host only 32-bit executables are installed. Also, as you reported, on a 64-bit host the installation installs a blend of 32-bit and 64-bit executables in the ‘ia32’ directory. Those 64-bit executables are capable of generating 32-bit code/executables.
 
That blend will not support a usage scenario consisting of a 64-bit host serving as a tool repository for other systems that includes 32-bit systems, which I’m guessing must reflect your situation and how you became aware of this. Some options to work around this would be to host the IA32 tools from a 32-bit server for use on 32-bit systems, or install the tools locally on the 32-bit system for use locally.

I reported this to the Installation Developers for further investigation. I will let you know what I hear back.

(Internal tracking id: DPD200379630)

0 Kudos
Mick_Pont
Beginner
407 Views

 

Kevin - thanks for looking into it. Yes, our usage scenario is as you describe - a 64-bit machine hosting tools which are used on 32- and 64-bit machines

Mick

0 Kudos
mecej4
Honored Contributor III
407 Views

Kevin, here is an added twist. When Parallel Studio with C/C++ is installed on a 64-bit Windows system, there are two shortcuts to CMD batch files. Of these, "Compiler 16.0 Update 1 for IA-32 Visual Studio 2013 environment" actually calls the 32-bit cmd.exe in SysWow64, with arguments (among others) ""C:<install_dir>\compilers_and_libraries_2016.1.139\windows\bin\ipsxe-comp-vars.bat" ia32 vs2013". However, the path is set up in such a way that "icl" uses icl.exe in bin\intel64_ia32, which is a 64-bit PE32+ EXE! That is what caused problems when used from a remote 32-bit system.

There is a 32-bit icl.exe that exists in bin\ia32, but that never gets used. Does that file have any reason to exist on a 64-bit Windows system?

The layout of the compiler tools is quite different from that in earlier versions of Intel C than 16.0. An article about the changes and the rationale for the layout would be appreciated.

There is another unpleasant side effect from these changes: icl /Zi does not work in a 32-bit command window, whereas cl /Zi does, as reported in https://software.intel.com/en-us/forums/intel-c-compiler/topic/602255 . The problem is caused by the 64-bit Intel C compiler attempting to use the 32-bit MDPDBxxx.DLL found on PATH.

0 Kudos
Kevin_D_Intel
Employee
407 Views

@Mick – Thank you for the confirmation.

@mecej4 – And a complicated one at that. I’ll dig into what you described, and reply again after I know more. The article, New Directory Layout for Intel® Parallel Studio XE 2016, offers an overview of the directory structure and benefits; it’s not detailed but hopefully it helps. There are additional benefits internally for us related to packaging across our various product offerings that share some components.

0 Kudos
Nhon_L_
Beginner
407 Views

I'm migrating from "Intel(R) C Compiler XE for applications running on IA-32, Version 12.0.4.191 Build 20110427" to new compiler "Intel(R) C Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 16.0.3.210 Build 20160415". After installation, I discover that all the 32 bits library under the "compiler/lib/ia32/"  and 32 bits binary "bin/ia32/icc" are missing. Does the new version has these files, and if so where are they?

0 Kudos
Nhon_L_
Beginner
407 Views

Is there a way to down load Intel(R) C Compiler XE for applications running on IA-32, Version 12.0.4.191 ?

0 Kudos
TimP
Honored Contributor III
407 Views

Nhon L. wrote:

I'm migrating from "Intel(R) C Compiler XE for applications running on IA-32, Version 12.0.4.191 Build 20110427" to new compiler "Intel(R) C Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 16.0.3.210 Build 20160415". After installation, I discover that all the 32 bits library under the "compiler/lib/ia32 and 32 bits binary "bin/ia32/icc" are missing. Does the new version has these files, and if so where are they?

You have the choice at install time of installing intel64 only, or both intel64 and ia32, the latter depending on a prior installation of 32-bit g++ and libraries.

0 Kudos
Reply