Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

enabling 32-bit mode

sarge130
Beginner
1,114 Views

I'm having trouble running some old software that is compiled in a 32-bit mode and I want to rule out oneAPI as the problem. The software was compiled with the ia32 version of ifortran. When I attempt to use the software post-compilation, I try to initialize the ia32 enviroment using setvars.sh:

 

user@machine $ . setvars.sh ia32

:: initializing oneAPI environment ...

   -bash: BASH_VERSION = 5.1.8(1)-release

   args: Using "$@" for setvars.sh arguments: ia32

:: advisor -- latest

:: ccl -- latest

:: clck -- latest

:: compiler -- latest

:: dal -- latest

:: debugger -- latest

:: dev-utilities -- latest

:: dnnl -- latest

:: dpcpp-ct -- latest

:: dpl -- latest

:: inspector -- latest

:: intelpython -- latest

:: ipp -- latest

:: ippcp -- latest

:: ipp -- latest

:: itac -- latest

:: mkl -- latest

:: mpi -- latest

:: tbb -- latest

:: vpl -- latest

:: vtune -- latest

:: oneAPI environment initialized ::

 

The problem is I only see the 64-bit version of ifort in my path:

 

user@machine $ which ifort

/opt/intel/oneapi/compiler/2022.1.0/linux/bin/intel64/ifort

 

I installed the whole ia32 package and have the 32-bit version here:

 

/opt/intel/oneapi/compiler/2022.1.0/linux/bin/ia32/ifort

 

Is there something I'm missing? This is how I enabled the 32-bit mode on a previous version prior to oneAPI.

0 Kudos
1 Solution
Ron_Green
Moderator
1,097 Views

the compiler itself is a 64bit application that can create binaries for intel64 or ia32.

I'm assuming your linux OS is 64bit.

you should have installed the glib 32bit compatible libraries.

source <path>/setvars.sh ia32 sets up the compiler to generate 32bit binaires by default.

you can test this with 'file' command followed by the object name.  Example for myprog

ifort -o myprog myprog.f90

file myprog

 

you can use -m32 option to specify 32bit binaries.  or -m64 for intel64

ifort -o hello hello.f90 -m64

file hello

hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=9ac402597c66e4d09dec795b16c8132af33f47e3, not stripped

 

For 32bit, you should probably static link

ifort -m32 -o hello hello.f90 -static

 

so that you don't have problems running the program and not finding the 32bit dynamic libraries 

View solution in original post

0 Kudos
2 Replies
Ron_Green
Moderator
1,098 Views

the compiler itself is a 64bit application that can create binaries for intel64 or ia32.

I'm assuming your linux OS is 64bit.

you should have installed the glib 32bit compatible libraries.

source <path>/setvars.sh ia32 sets up the compiler to generate 32bit binaires by default.

you can test this with 'file' command followed by the object name.  Example for myprog

ifort -o myprog myprog.f90

file myprog

 

you can use -m32 option to specify 32bit binaries.  or -m64 for intel64

ifort -o hello hello.f90 -m64

file hello

hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=9ac402597c66e4d09dec795b16c8132af33f47e3, not stripped

 

For 32bit, you should probably static link

ifort -m32 -o hello hello.f90 -static

 

so that you don't have problems running the program and not finding the 32bit dynamic libraries 

0 Kudos
sarge130
Beginner
1,092 Views

Thank you! I think that answers my question.

0 Kudos
Reply