multiple definition of `__i686.get_pc_thunk.bx'

Stephen Montgomery-Smith stephen at missouri.edu
Tue Mar 1 18:36:57 UTC 2011


b. f. wrote:
> On 3/1/11, Stephen Montgomery-Smith<stephen at missouri.edu>  wrote:
>> Stephen Montgomery-Smith wrote:
>>> b. f. wrote:
>>>>>> On Sun 27 Feb 2011 at 12:24:06 PST Stephen Montgomery-Smith wrote:
> ...
>>>>
>>>> As is clear from bsd.gcc.mk, in almost every case now in use,
>>>> USE_FORTRAN sets _USE_GCC, which sets CC, CPP, and CXX to the proper
>>>> values.  Also, it sets USE_BINUTILS where appropriate, which sets LD,
>>>> etc.  The problem is rather with libtool, particularly in the link
>>>> mode, where it may not respect the choice of compiler and toolchain.
>>>> This problem has been remarked, for two years or more, in the mailing
>>>> lists and forums, when people discuss the use of compilers other than
>>>> the base system compiler.  With the recent updates, it is more
>>>> obtrusive, and several ports that were building successfully with
>>>> default settings are now broken.  This needs to be fixed, and it would
>>>> be better to fix libtool than to add a bunch of ad-hoc fixes to
>>>> individual ports.
> ...
>>
>> OK, this problem was more subtle than I originally thought.  The error I
>> pointed out doesn't occur consistently, but it does occur in the context
>> of building vis5d+.
>>
>> But I have a patch that definitely fixes libtool enough for me.  What do
>> you guys think?  This perhaps doesn't fix all the problems, but maybe it
>> can act as a model to fix them all.
>>
>>
>
> libtool caches more than just the compiler name.  It also stores the
> path to various utilities (ar, as, ld, etc.), various compiler flags,
> compiler search directories, (pre|post)dep objects, etc.  These aren't
> always used, but they may sometimes be important, and they vary among
> the different compilers in ports, so I think that any modifications
> should take these into account. One of the problems is that the
> upstream developers didn't think that (outside of cross-building,
> which is handled a bit differently) more than one toolchain would be
> in use on a given system.  On my system I adopted the expedient of
> modifying bsd.autotools.mk and adding separate per-compiler libtool
> ports.  That's not the prettiest way of handlng this problem either,
> and it is awkward for the libltdl ports, so I'm not saying that this
> method should be adopted.
>
> b.

But maybe one could patch libtool by putting a similar if statement 
around every tool, to see if there is a similar tool already defined by 
the environment:

if test -z "\$CXX"; then \\
   CC=$lt_compiler_CXX
else
   CC=\$CXX
fi



More information about the freebsd-ports mailing list