I compiled my project on 64bit SGI Linux.My project is done with C codes and Fortran codes. I compile myC codes with gcc, and compile my Fortran codes with ifort(Intel fortran 9.0). But when I link them with ld, I got an error message like this:
"ld: can't relax section: File format not recognized"
I use the command "file" check my *.o file, both of theC files *.o and the Fortran files *.o showed like this:
"ELF 64-bit LSB relocatable, IA-64, version 1 (SYSV), not stripped"
where is my mistake?
Thanks!
連結已複製
No, we don't know. It may be you don't have a good version of ld; you didn't give many clues. The current bnu binutils (build it from source)is better than many of those commonly installed. The oldest satisfactory one is Red Hat "hot fix" 2.15.92.0.2; if you have SuSE, you should check YOU. You would have much better chance if you used a current ifort.
Or, it could even be thatusing ifort to drive the link might work.In case you don't have a Fortran main program, there is an option for that.
SGI has at least 4 different major versions of 64-bit linux. You narrowed it down only a little by mentioning IA-64.
If you get everything up to date, and still have a problem, you should submit a report on your premier.intel.com account.
Yes, I have found several times, on both IA-64 and Intel64, linking problems were corrected by building and installingstandard gnu binutils source. The Red Hat version I quoted has back-ported bug fixes; actually it is less than a year old.
The last Intel 8.1 compilers, and current 9.1 compilers, have the libraries organized so that the problem you quote is less frequent than before, even when using the older binutils.
