Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.

-Wl,-rpath crashes icpc

lionelb
Beginner
1,175 Views
ICC 10.1.013 on Linux x86_64

To replicate problem:

$ cat > scratch.cpp
int main() {}

Then:

$ icpc scratch.o -o scratch
$ icpc scratch.o -Wl,-rpath /usr/local/lib -o scratch
(0): internal error: backend signals

icpc: error #10014: problem during multi-file optimization compilation (code 4)

Note that `/usr/local/lib' was just for demonstration; any directory (that exists) has the same effect. Using alternative options to pass -rpath to the linker (e.g. -Qoption,link -Xlinker) doesn't help.

If the compile and link are specified on one line this does not happen:

$ icpc scratch.cpp -Wl,-rpath /usr/local/lib -o scratch

is OK.

This problem goes back to ver 9.0 (and possibly earlier) as I recall.

Any help appreciated,
Lionel

0 Kudos
7 Replies
lionelb
Beginner
1,175 Views
Nobody seen anything like this before?

Any ideas what could cause errors like
(0): internal error: backend signals
icpc: error #10014: problem during multi-file optimization compilation (code 4)
Any suggested workarounds (setting LD_LIBRARY_PATH won't do it for my current setup)?

It's a total show-stopper for me... due to my system setup I need to be able to use -rpath.

0 Kudos
Dale_S_Intel
Employee
1,175 Views
You're right, it's easy to reproduce the problem. I'll look into it and let you know what I find.

Dale
0 Kudos
Dale_S_Intel
Employee
1,175 Views
OK there are at least two problems. One is that we fail with an internal error. I've been assured that this will be fixed in a future release.

The second problem is a problem with the command line as it is written. When using the -Wl to pass things to the linker, the separate elements need to be comma delimited, i.e. instead of this:
icpc scratch.o -Wl,-rpath /usr/local/lib -o scratch

it should be this:
icpc scratch.o -Wl,-rpath,/usr/local/lib -o scratch

That seems to work for me. Let me know if your results differ.

Thanks!

Dale
0 Kudos
levicki
Valued Contributor I
1,175 Views

Dale, at least in Windows "," is a valid filename character (and so is ";"). What happens to your command line parser if one has a filename with "," in it?

0 Kudos
Dale_S_Intel
Employee
1,175 Views
I believe that the -Wl switch is specific to Linux and Mac, at least for our compiler. I believe this is consistent with gcc. I don't think I've ever seen a library name or path with a comma or semicolon in it, but there are many life experiences I have yet to enjoy.

If you really need a library path with a ',' or ';' in it, we can burn that bridge when we come to it :-)

Dale
0 Kudos
levicki
Valued Contributor I
1,175 Views

There is an equivalent in Windows in the form of "-Qlocation,link" switch. Of course, one can always rename the file later if they need "," in the name, I was just pointing out that the separator character should not be a valid filename character or someone sometimes might complain about it.

0 Kudos
Feilong_H_Intel
Employee
1,175 Views
This issue has been fixed in 11.0.069. Just FYI.
$ icc -V
Intel C Compiler Professional for applications running on IA-32, Version 11.0 Build 20080930 Package ID: l_cproc_p_11.0.069
Copyright (C) 1985-2008 Intel Corporation. All rights reserved.
$ icpc hello.o -Wl,-rpath /usr/local/lib -o hello
$
0 Kudos
Reply