multiple definition of `__i686.get_pc_thunk.bx'

Ade Lovett ade at
Mon Feb 28 06:43:45 UTC 2011

> On Sun 27 Feb 2011 at 12:24:06 PST Stephen Montgomery-Smith wrote:
>> I am the maintainer of the port vis5d+.  I just got this email (copied below) saying that vis5d+ isn't building right now.
>> The issue seems to be that some reference to __i686.get_pc_thunk.bx is included twice at some point.  This variable seems to be part of an object file crtbeginS.o that is created by gcc or gcc45, in what seem to me to be very mysterious conditions.  I am rather sure that the issue has nothing to do with vis5d+, but rather is something to do with either gcc45, or libtools, neither of which I understand.
>> Does anyone out there have any idea of what the problem is, or how it can be solved?

From a relatively cursory examination, this appears to be a flaw in the USE_FORTRAN=yes stanza.  This will bring in gcc45 as a dependency but doesn't appear to be setting CXX to g++45 though it does do CC=gcc45.  Possibly the same for LD, though I haven't checked that.

With parts of the code being compiled against gcc45, and then an attempted link with the system compiler (CC/LD), then naturally things will go south, irrespective of whether libtool is being used.

I would hazard a guess that if ya'll added USE_GCC=45 to vis5d+'s Makefile, things will link properly.  If someone could test this, that'd be peachy.  If it turns out that this works, then it would be a minor tweak to to forcibly set USE_GCC if USE_FORTRAN is also set, to allow all of the environmental variables to be punched out for compilation.


More information about the freebsd-ports mailing list