[distcc] newbie: problem with distcc and intel C++ 7.1: 0 byte object

Martin Pool mbp at samba.org
Tue Jun 10 07:22:06 GMT 2003

On  8 Jun 2003, Cristian Tibirna <ctibirna at giref.ulaval.ca> wrote:
> Le Friday, 06 June 2003 10:29, Markus Werle a écrit:

> I have the same problem and, as it was pointed to me (in this same list; you 
> might find the messages in the archive), it's a problem stemming from a 
> difference in file extensions handling between the gnu compilers and ICC.
> As you might know, in order to distribute compiling, distcc preprocesses your 
> C/C++ file on the main node/server (the one doing the make -jN) and sends the 
> result over the network to the computing client, which passes it to gcc as a 
> file with the .ii extension. It seems that ICC waits for a file with the 
> extension .i.
> Now, ICC has commandline switches that allow for explicit specification of the 
> type of the file passed, but I didn't yet come around to find out if there's 
> a way to configure the commandline used by a distcc client to launch 
> compilations. Or add such a way if it doesn't exist.

As Cristian says there does not seem to be any terribly good solution
at the moment.

What happens when you give a .ii file to icc?  Does it just fail, or
does it compile it incorrectly?

> Suggestions I received included changing the source of the distcc client so 
> that it employs the .i extension instead of .ii, but this isn't convenient 
> for me, as I use (concurently) gcc and icc on the same compiling
> farm.

I think you'd need to change the server, not the client.

If you made that change then I think things would work except for
cases like "gcc foo.cc", where you are indicating that it is a C++
file only by the extension.  gcc would see "tmpfoo.i", and compile it
as C.  However, if you invoked the compiler as "g++ foo.i" then things
would, I think, work out.

That is in fact a good question: if icc only accepts .i as a
preprocessed source file name then how does it know what language it's
supposed to be?

None of these are very helpful I know, but perhaps one of them will work:

 - use gcc and support free software instead?

 - lobby Intel to change this?

 - put a little script on your server's path that renames the tmpfile
   and invokes icc with the new name.

If anyone can describe a better solution or send a patch then I'll be
happy to look at it.


More information about the distcc mailing list