Same compiler needed for C libraries?

I’ve often heard that the same compiler should be used to compile
Ruby and C extensions. I’ve also heard the same restriction for Perl,
mod_perl, and Apache. Libraries distributed as binaries for Windows
have to be compiled with Microsoft the compiler as well, right?

Say, for example, you’ve got a Ruby in Solaris compiled with the Sun
compiler, and the suite is not installed, nor can you install it.
Would you try to tweak Makefiles to compile some library with gcc? Or
is that just a bad idea and it is better to compile Ruby by hand
bypassing the system Ruby and go on from there?

I am not very familiar with compilers and linkers, which is the
reason behind these constraints?

– fxn

Hi,

At Thu, 11 Jan 2007 21:47:47 +0900,
Xavier N. wrote in [ruby-talk:233538]:

I’ve often heard that the same compiler should be used to compile
Ruby and C extensions. I’ve also heard the same restriction for Perl,
mod_perl, and Apache. Libraries distributed as binaries for Windows
have to be compiled with Microsoft the compiler as well, right?

It is not accurate. They have to be compiled with same
version
of Microsoft compiler, or mingw and VC6.

Say, for example, you’ve got a Ruby in Solaris compiled with the Sun
compiler, and the suite is not installed, nor can you install it.
Would you try to tweak Makefiles to compile some library with gcc? Or
is that just a bad idea and it is better to compile Ruby by hand
bypassing the system Ruby and go on from there?

In general, gcc generated code is compatible with system
compilers.

On Jan 11, 2007, at 3:19 PM, Nobuyoshi N. wrote:

Thank you!

At Thu, 11 Jan 2007 21:47:47 +0900,
Xavier N. wrote in [ruby-talk:233538]:

I’ve often heard that the same compiler should be used to compile
Ruby and C extensions. I’ve also heard the same restriction for Perl,
mod_perl, and Apache. Libraries distributed as binaries for Windows
have to be compiled with Microsoft the compiler as well, right?

It is not accurate. They have to be compiled with same
version
of Microsoft compiler, or mingw and VC6.

You mean it is even stronger? Same compiler and same version?

In general, gcc generated code is compatible with system
compilers.

Great, that’s helpful to know. In that case I guess on Solaris I
could tweak the system-wide mkmf.rb to use gcc and it would work (I
think the compiler suite is downloadable for free, but in this thread
I just want to understand what works and what not).

– fxn