- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you! I think that answers my question.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page