- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear Sir,
I just transported a fortran code from a Compaq Alpha Linux workstation to an Intel Xeon EM64T with Red Hat Enterprise Linux version 4.
Using the free non-commercial fortran compiler downloadable from
http://www.intel.com/cd/software/products/asmo-na/eng/compilers/flin/219857.htm
(intel_fc_80) I encountered the following problems.
Compiling the code with ifort using the options:
-g -static -warn all -L/opt/intel/mkl_7.2.1.003/mkl721/lib/em64t -lmkl_em64t -lpthread
I get it compiled without warnings, but not linked, due to the following:
ld: skipping incompatible /opt/intel/mkl_7.2.1.003/mkl721/lib/em64t/libmkl_em64t.a when searching for -lmkl_em64t
ld: cannot find -lmkl_em64t
Instead, when I use the (32-bit) options:
-g -static -warn all -L/opt/intel/mkl_7.2.1.003/mkl721/lib/32/ -lmkl_ia32 -lpthread
I get it compiled with no warnings and linked with the warnings below:
/opt/intel_fc_80/lib/libifcore.a(for_open_proc.o)(.text+0x3826): In function `for__compute_filename':
: warning: Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/opt/intel_fc_80/lib/libifcore.a(for_open_proc.o)(.text+0x3909): In function `for__compute_filename':
: warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
What does this mean?
Then if I run the executable in this latter case, I get a segmentation fault error:
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Do I need a different non-commercial compiler, suitable for the EM64T processor (intel_fce_80?). Otherwise, how can I make this compiler work on EM64T?
Thank you very much for your time,
Matteo
I just transported a fortran code from a Compaq Alpha Linux workstation to an Intel Xeon EM64T with Red Hat Enterprise Linux version 4.
Using the free non-commercial fortran compiler downloadable from
http://www.intel.com/cd/software/products/asmo-na/eng/compilers/flin/219857.htm
(intel_fc_80) I encountered the following problems.
Compiling the code with ifort using the options:
-g -static -warn all -L/opt/intel/mkl_7.2.1.003/mkl721/lib/em64t -lmkl_em64t -lpthread
I get it compiled without warnings, but not linked, due to the following:
ld: skipping incompatible /opt/intel/mkl_7.2.1.003/mkl721/lib/em64t/libmkl_em64t.a when searching for -lmkl_em64t
ld: cannot find -lmkl_em64t
Instead, when I use the (32-bit) options:
-g -static -warn all -L/opt/intel/mkl_7.2.1.003/mkl721/lib/32/ -lmkl_ia32 -lpthread
I get it compiled with no warnings and linked with the warnings below:
/opt/intel_fc_80/lib/libifcore.a(for_open_proc.o)(.text+0x3826): In function `for__compute_filename':
: warning: Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/opt/intel_fc_80/lib/libifcore.a(for_open_proc.o)(.text+0x3909): In function `for__compute_filename':
: warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
What does this mean?
Then if I run the executable in this latter case, I get a segmentation fault error:
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Do I need a different non-commercial compiler, suitable for the EM64T processor (intel_fce_80?). Otherwise, how can I make this compiler work on EM64T?
Thank you very much for your time,
Matteo
Link Copied
3 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You do need the l_fce compiler. For non-commercial, at the moment, you must register your compiler at the Intel Registration Center and create a Premier Support account. Log into the Premier Support account, select File Downloads and download the latest compiler package with a name starting with l_fce. Install that. Please read the release notes before installing.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It does look like you are attempting to link a mixture of 32- and 64-bit components. If you are using (unintentionally) a 32-bit ifort, it should ignore the contents of a 64-bit library, as it appears to have done.
This static linking issue has been nagging us for a while. It comes about when a mixture of static and dynamic link commands is passed to the gnu linker ld, and ld apparently doesn't know whether it has linked the application correctly. If you don't require -static, try removing that to see whether the problem is one of linking. If you do require -static, it may work better with relatively small changes in the link command. Adding the -# option will display the actual command line passed to ld.
This static linking issue has been nagging us for a while. It comes about when a mixture of static and dynamic link commands is passed to the gnu linker ld, and ld apparently doesn't know whether it has linked the application correctly. If you don't require -static, try removing that to see whether the problem is one of linking. If you do require -static, it may work better with relatively small changes in the link command. Adding the -# option will display the actual command line passed to ld.
Message Edited by tim18 on 07-12-2005 01:12 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Firstly, thank you for your prompt response.
I have installed the intel_fce_80 compiler for EM64T, as you suggested. I have then tried compiling two test programs (one made of a few simple assignments, the other needing MKL libraries), both with and without the -static option.
As for the few-lines code, using the options '-g -static -warn all -lpthread' I get like before:
/opt/intel_fce_80/lib/libifcore.a(for_open_proc.o)(.text+0x3d86): In function `for__compute_filename':
: warning: Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/opt/intel_fce_80/lib/libifcore.a(for_open_proc.o)(.text+0x3e9d): In function `for__compute_filename':
: warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
however the executable runs correctly.
Instead, removing '-static' from the above options, it is compiled and linked without errors, and runs correctly.
Let us come to the second test code, requiring MKL now.
Using the options:
-g -static -warn all -L/opt/intel/mkl_7.2.1.003/mkl721/lib/em64t -lmkl_em64t -lpthread
I get the usual warning:
/opt/intel_fce_80/lib/libifcore.a(for_open_proc.o)(.text+0x3d86): In function `for__compute_filename':
: warning: Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/opt/intel_fce_80/lib/libifcore.a(for_open_proc.o)(.text+0x3e9d): In function `for__compute_filename':
: warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
while taking the -static out from above I get the code compiled and linked with no warnings. But at run time it gives again a segmentation fault error. The code was working perfectly on the other (Alpha) workstation, so it should be correct.
What do you think is wrong at this point?
Thanks a lot,
Matteo
I have installed the intel_fce_80 compiler for EM64T, as you suggested. I have then tried compiling two test programs (one made of a few simple assignments, the other needing MKL libraries), both with and without the -static option.
As for the few-lines code, using the options '-g -static -warn all -lpthread' I get like before:
/opt/intel_fce_80/lib/libifcore.a(for_open_proc.o)(.text+0x3d86): In function `for__compute_filename':
: warning: Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/opt/intel_fce_80/lib/libifcore.a(for_open_proc.o)(.text+0x3e9d): In function `for__compute_filename':
: warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
however the executable runs correctly.
Instead, removing '-static' from the above options, it is compiled and linked without errors, and runs correctly.
Let us come to the second test code, requiring MKL now.
Using the options:
-g -static -warn all -L/opt/intel/mkl_7.2.1.003/mkl721/lib/em64t -lmkl_em64t -lpthread
I get the usual warning:
/opt/intel_fce_80/lib/libifcore.a(for_open_proc.o)(.text+0x3d86): In function `for__compute_filename':
: warning: Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/opt/intel_fce_80/lib/libifcore.a(for_open_proc.o)(.text+0x3e9d): In function `for__compute_filename':
: warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
while taking the -static out from above I get the code compiled and linked with no warnings. But at run time it gives again a segmentation fault error. The code was working perfectly on the other (Alpha) workstation, so it should be correct.
What do you think is wrong at this point?
Thanks a lot,
Matteo

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page