py-numpy build failure, multiple definition of `__i686.get_pc_thunk.bx'

Kostik Belousov kostikbel at gmail.com
Fri Feb 4 19:54:07 UTC 2011


On Fri, Feb 04, 2011 at 10:55:12AM -0800, Charlie Kester wrote:
> On Fri 04 Feb 2011 at 02:05:44 PST Kostik Belousov wrote:
> >On Thu, Feb 03, 2011 at 09:15:00PM -0800, Charlie Kester wrote:
> >...
> >>customize UnixCCompiler
> >>customize UnixCCompiler using build_ext
> >>customize Gnu95FCompiler
> >>customize Gnu95FCompiler using build_ext
> >>building 'numpy.core._sort' extension
> >>compiling C sources
> >>C compiler: gcc45 -DNDEBUG -mtune=generic -msse -msse2 -msse3 
> >>-mfpmath=sse -O2 -fno-strict-aliasing -pipe -D__wchar_t=wchar_t 
> >>-DTHREAD_STACK_SIZE=0x20000 -mtune=generic -msse -msse2 -msse3 
> >>-mfpmath=sse -O2 -fno-strict-aliasing -pipe 
> >>-Wl,-rpath=/usr/local/lib/gcc45 -fPIC
> >>
> >>compile options: '-Inumpy/core/include 
> >>-Ibuild/src.freebsd-8.2-PRERELEASE-i386-2.7/numpy/core/include/numpy 
> >>-Inumpy/core/src/private -Inumpy/core/src -Inumpy/core 
> >>-Inumpy/core/src/npymath -Inumpy/core/src/multiarray 
> >>-Inumpy/core/src/umath -Inumpy/core/include 
> >>-I/usr/local/include/python2.7 
> >>-Ibuild/src.freebsd-8.2-PRERELEASE-i386-2.7/numpy/core/src/multiarray 
> >>-Ibuild/src.freebsd-8.2-PRERELEASE-i386-2.7/numpy/core/src/umath -c'
> >>gcc45: 
> >>build/src.freebsd-8.2-PRERELEASE-i386-2.7/numpy/core/src/_sortmodule.c
> >>cc -shared -pthread -mtune=generic -msse -msse2 -msse3 -mfpmath=sse -O2 
> >>-fno-strict-aliasing -pipe -Wl,-rpath=/usr/local/lib/gcc45 
> >>build/temp.freebsd-8.2-PRERELEASE-i386-2.7/build/src.freebsd-8.2-PRERELEASE-i386-2.7/numpy/core/src/_sortmodule.o -Lbuild/temp.freebsd-8.2-PRERELEASE-i386-2.7 -lm -o build/lib.freebsd-8.2-PRERELEASE-i386-2.7/numpy/core/_sort.so
> >>build/temp.freebsd-8.2-PRERELEASE-i386-2.7/build/src.freebsd-8.2-PRERELEASE-i386-2.7/numpy/core/src/_sortmodule.o(.text.__i686.get_pc_thunk.bx+0x0): In function `__i686.get_pc_thunk.bx':
> >>: multiple definition of `__i686.get_pc_thunk.bx'
> >>/usr/lib/crtbeginS.o(.gnu.linkonce.t.__i686.get_pc_thunk.bx+0x0): first 
> >>defined here
> >>build/temp.freebsd-8.2-PRERELEASE-i386-2.7/build/src.freebsd-8.2-PRERELEASE-i386-2.7/numpy/core/src/_sortmodule.o(.text.__i686.get_pc_thunk.bx+0x0): In function `__i686.get_pc_thunk.bx':
> >>: multiple definition of `__i686.get_pc_thunk.bx'
> >>/usr/lib/crtbeginS.o(.gnu.linkonce.t.__i686.get_pc_thunk.bx+0x0): first 
> >>defined here
> >>error: Command "cc -shared -pthread -mtune=generic -msse -msse2 -msse3 
> >>-mfpmath=sse -O2 -fno-strict-aliasing -pipe 
> >>-Wl,-rpath=/usr/local/lib/gcc45 
> >>build/temp.freebsd-8.2-PRERELEASE-i386-2.7/build/src.freebsd-8.2-PRERELEASE-i386-2.7/numpy/core/src/_sortmodule.o -Lbuild/temp.freebsd-8.2-PRERELEASE-i386-2.7 -lm -o build/lib.freebsd-8.2-PRERELEASE-i386-2.7/numpy/core/_sort.so" failed with exit status 1
> >>*** Error code 1
> 
> >Can you show the actual invocation of the compiler driver for linking ?
> 
> Isn't that the line right before the first report of the error?
> 
> cc -shared -pthread -mtune=generic -msse -msse2 -msse3 -mfpmath=sse -O2 
> -fno-strict-aliasing -pipe -Wl,-rpath=/usr/local/lib/gcc45 
> build/temp.freebsd-8.2-PRERELEASE-i386-2.7/build/src.freebsd-8.2-PRERELEASE-i386-2.7/numpy/core/src/_sortmodule.o -Lbuild/temp.freebsd-8.2-PRERELEASE-i386-2.7 -lm -o build/lib.freebsd-8.2-PRERELEASE-i386-2.7/numpy/core/_sort.so
> 
> FWIW, I tried modifying my make.conf to remove the additional CFLAGS I'd
> added, like -fno-strict-aliasing. But the build still failed using only
> the CFLAGS provided by the ports system and py-numpy's configtests.
> 
> I also checked for environment variables related to the linker and found
> none.  (For this build I'm logged into the console, not a terminal
> emulator, as root and am not using a custom profile.)
> 
> My PATH looks like this:
> /sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin
> 
> I do have gcc45 installed, but only as a result of some other port that
> required it.  I forget which one.  Anyway, you can see that it's being
> used in the excerpt above.
I wanted the confirmation of exact command that failed. If your citation
above is right, then port _does not_ use gcc45 to do linkage of the
module. Generally, crtbegin/crtend.o come from the compiler installation,
so I am suspicious at least to report of use of /usr/lib/crtbegin.So.

Can you enter the port build directory and execute the same command
manually, substituting "cc" with full path to gcc45 ?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-python/attachments/20110204/7ca7d486/attachment.pgp


More information about the freebsd-python mailing list