On 1/5/19, Bruno Haible <[email protected]> wrote: > As you can see, it does not use $CC (which I set to a 64-bit compiler) > but 'cc' (which happens to be a 32-bit compiler - thus causing a mismatch > with the CPPFLAGS and LDFLAGS that I specified). > >> This could be explained by a different compiler and flags being used >> to build a Perl XS module. > > Indeed, this is the problem. The configure script and the Makefile ought to > use $CC that was provided to the configure script, not something else. > (I'm speaking from experience: In GNU clisp, for some time, I was passing > different CFLAGS value down to a specific subdirectory, and this produced > endless problems. A different CC value is even worse, because it may end > up creating .o files of a different ABI.)
It uses the output of "perl -V:cc" as $CC because the perl interpreter may have been built with a different compiler than the one being used to build the rest of Texinfo (e.g. the info browser). For the best chance for XS modules to be compatible with the perl interpreter, they should be built with the same compiler and flags. This of course may not be possible. > If libperl is built against a different ABI, your only options are > - to ignore it and not build the XS parser module, or > - to abort the configuration with an error message such as "libperl > found is not compatible with ABI implied by $CC $LDFLAGS". Using two different compilers has been successful before, for example on Solaris 10 using gcc at the top-level and the "Sun Studio" compiler for the extension modules. It is possible to override the C compiler given by Perl by setting PERL_EXT_CC when configure is run. There are also PERL_EXT_CFLAGS, PERL_EXT_CPPFLAGS and PERL_EXT_LDFLAGS.
