- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi all,
I'm using icc19.4 (gcc 8.3 compatibility) on Ubuntu18.10 to build a huge project.
The build process halts throwing the following errors.
**********************************************
ld: cannot find none: No such file or directory
FATAL ERROR: ld partial link command failed
icc: error #10014: problem during multi-file optimization compilation (code 1)
***********************************************
It seems that the linker cannot find something (some files? some symbols?)
but it doesn't point out what is missing.
So is there any help about how to find the root cause? And what is the meaning of this error?
Thanks!
Regards
yuandong
- Tags:
- CC++
- Development Tools
- Intel® C++ Compiler
- Intel® Parallel Studio XE
- Intel® System Studio
- Optimization
- Parallel Computing
- Vectorization
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
That message related to ipo. Can you check to see if -ipo being used?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you Hoang,
I check the makefile and find it used -ipo1 flag indeed.
If this option is removed, the build process can pass.
IPO feature is only used for release mode, but I know little about it (it's a legacy for me).
Is there any negative effect if I disable IPO feature for my project?
Regards
Yuandong
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Depends on your project, you may see some performance impact.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ok, Hoang.
We tend to continue to use the IPO feature.
I have known IPO is an automatic optimization provided by the compiler.
But I still don't know why this problem occurs and what's the real meaning of the error output.
So is there any suggestions about how to fix this problem when the flag -ipo is enabled?
BTW, we use icc16.0 before and there is no this problem, but it is raised after we upgrade our toolchain to icc19.4.
Thanks & Regards
Yuandong
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Can you check if -ipo also in the link line?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
No, there is no -ipo option in the link line.
I have tried if the option is added to link line, the build process also failed with the same error.
But before the error, it also throws many the following warning:
ipo: warning #11003: No IR in object file xxx; was the source file compiled with -ipo?
But -ipo option in the compile line is used indeed.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Can you add -ipo to the link line?
For the warning #11003 seems like some/many objects were not compiled with -ipo flags. What you can do to verify is to add -sox to your command line options. Then pick an object which gave you a warning above and
"strings -a abc.o >& abc.out" then "vim abc.out" search for -ipo
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ok, Hoang.
I have picked up the object can't be compiled with -ipo.
Because when compile it with IPO, it gives the following error:
icc: command line error: multiple sources not allowed with -o option
I assume -o option is used to specify the output file name.
Why does the compiler complain it illegal?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You must have more than one source files per compilation unit. (i.e. icc foo.c bar.c -c -o foo_bar.o)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you, Hoang.
I have already more than one source files when compile them with -ipo1 option.
The compile process failed at there and gave "icc: command line error: multiple sources not allowed with -o option".
But when I remove -o option (which I use to specify the name of the output file),
the compile process can pass and the output file use the default name (source_file_name.o).
It's strange: can not use -o option when using IPO feature?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You are able to use -o to name your output file with -ipo. Not really sure what going on in your Env.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ok, Hoang. Thanks for your update.
Now I have the following two questions about IPO feature.
(1) I found that only a part of objects in my project are compiled with IPO.
And there are no IPO option in the linker lines. All the objects can be linked under the environment with icc16.0.
Should I compile all the objects if I want to use IPO with icc19.4?
Is the object compiled with IPO able to linked with that done with non-IPO?
(2) There are many source files in assembly language in my project.
They are not processed with any IPO flags.
Are the source files in assembly language (.ASM) able to use IPO feature?
If they are, how to deal with them?
Yuandong
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You can link objects compile with and without -ipo.
If you have inline assembly, then the code gen will be generated the way it has written. So, I don't think ipo will have any affect on inline assembly at all.

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