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

Linking error with Ifort

gluegerainer
Beginner
1,458 Views
Hi everyone!

I get the following error during linktime:

/local/home/Gluege/abaqus/6.5-2/cae/exec/lbr/libstandardB.so: could not read symbols: Invalid operation

what is this?

i am using abaqus 6.5-1 with ifort 8.1 on a suse 9.2 AMD64.

thanks for help,

rainer
0 Kudos
10 Replies
TimP
Honored Contributor III
1,458 Views
Could be an out of memory error in ld. Earlier versions of 64-bit SuSE could give this with large .so files and small RAM. Make sure ld is not competing for memory with other applications. Assuming you have this file under license, you should check for any instructions from the vendor, if none, ask them.
0 Kudos
gluegerainer
Beginner
1,458 Views
Thanks for help first.

I don't think that's it, because i should have enough RAM (1GB) and the linux distribution is also pretty new, at least there are no updates for ld available. I heard about problems with the one or two underscores that is/are appended to compiled routines or something, and that there may be a mismatch with this convention.
How do i check wether it's the error you described or something else? can i assign RAM to the application?

greetings,

Rainer
0 Kudos
gluegerainer
Beginner
1,458 Views
i would like to try out older versions of ifort, because there were major changes implemented from version 7.x to 8.

where do i find it on the intel homepage?

with best wishes, rainer
0 Kudos
TimP
Honored Contributor III
1,458 Views
If you had a problem with number of appended underscores, you would expect unresolved reference diagnostics. I had a problem such as you describe with an earlier SuSE installation on 1GB RAM. It has not recurred with newer distros on 2GB RAM. 1GB RAM unfortunately is not much for large applications on the 64-bit OS. ld is much more hungry for memory in the 64-bit OS than the 32-bit one. I don't know how the limit is measured, whether it may be the number of linker symbols in the .so involved vs available memory.
I doubt that earlier Intel Fortran versions would make a difference. If anything, options to suppress private symbols from appearing in .so might help, but I have no direct experience with that. The most obvious suggestion is don't use -fpic. Beyond that, you could read http://www.intel.com/cd/ids/developer/asmo-na/eng/technologies/tools/198900.htm
and try the suggested options with your latest 8.1 compiler. If you have a paid license, you may download older compilers on your account on premier.intel.com.
0 Kudos
gluegerainer
Beginner
1,458 Views
Hello there.

I have exactly the same error without the -fpic option. What can i do? The suggested options in the article don't help either.
If the preemption should be avoided, -fminshare and -fvisibility=protected don't help.
To supress private symbols, what options are there?
By the way, i am using the noncomercial version of ifort, so i can't get older versions that easy.
Do other Fortran-development-environments also use the ld, or come along with an own linker? that would be my next shot.

greetings,

rainer
0 Kudos
TimP
Honored Contributor III
1,458 Views
I don't know of any Fortran compiler for 64-bit linux which provides its own linker, rather than using the one provided on the system. We have had situations where we had to get binutils source from kernel.org and install from that, but this seems unlikely to be the case for a SuSE installation kept up to date by YOU.
0 Kudos
gluegerainer
Beginner
1,458 Views
suse 9.2 is kept up to date by YOU and me.
ok, for the unlikely case that this is solved i will give a message how it happend. i really doubt that its the lack of RAM, because the application i'd like to build isn't that big.
may there be something wrong when the free distribution of intel c++ is also installed?
i have another question: when installing ifort, a command "source /.../ifortvars.sh" has to be run to setup the config file(s). when i do this, i get no error message, but i still can't call "man ifort", what tells me that something went wrong with the script.

greetings,

rainer
0 Kudos
TimP
Honored Contributor III
1,458 Views
The 8.1 compiler is set up to install C and Fortran in separate directories, to avoid problems in case their libraries are not updated together. So the icc installation should not influence ifort, particularly if no environment variables are set for icc. The ifortvars.sh script should add the appropriate ifort directories to MANPATH, PATH, and LD_LIBRARY_PATH. If those don't have the directories for your ifort installation ahead of any directories with files of the same names, you may expect trouble.
0 Kudos
gluegerainer
Beginner
1,458 Views
hello again!

i uninstalled ifort, and re-installed it again. i can compile and run programms, call the man-page of ifort and execute "ifort" from any directory, so it seems to be configured well. i still get the same errormessage.
i heard about that the proper sequence of the used libarys and/or objevt files is importand. may this be the source of this error?

regards,

rainer
0 Kudos
gluegerainer
Beginner
1,458 Views
what exactly is meant with "could not read symbols. invalid operation" at linktime?
it can't be a wrong or missing reference, otherwise there would be something like "undefinde symbol".
the 32-bit-version of ABAQUS works well with the same compiler on a suse 9.0 system. it may be a abaqus-related problem, because the file mentioned in the errormessage is an .so-file that comes with this abaqus-version.

see you,

rainer
0 Kudos
Reply