Some of the programs in the ia32 directory installed with recent
compiler versions are 64-bit programs, presumably by accident.
% 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
ifort: ELF 32-bit LSB executable, Intel 80386, ...
% 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.
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)
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.
@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.
I'm migrating from "Intel(R) C Compiler XE for applications running on IA-32, Version 220.127.116.11 Build 20110427" to new compiler "Intel(R) C Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 18.104.22.168 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?
Nhon L. wrote:
I'm migrating from "Intel(R) C Compiler XE for applications running on IA-32, Version 22.214.171.124 Build 20110427" to new compiler "Intel(R) C Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 126.96.36.199 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.