[PyQt] Duplicate symbols building PyQt5 against Qt5.1 on OS X 10.7.5

Chris Knight chris at dsl-only.net
Sun Jul 7 08:13:24 BST 2013


Hello,

I had PyQt5 working with Qt5.0.2 and Python 2.7but decided to dump my Qt5.0.2 and install the new Qt5.1.  My environment is mac OS X 10.7.5 which is the latest version of Lion.  

Qt5.1 installed without issues.
SIP installed without issues.

Running python configure.py for PyQt-gpl-5.0 failed with an error, "Error: Unable to create the C++ code."  The sources were in a folder on my desktop as they were last time I installed PyQt5 against Qt5.0.2 albeit without this error. I Googled and found that spaces  in a path have caused this error in the past and by moving the PyQt source directory to my user directory solved this issue and I was then able to run python configure.py without further errors or warnings.

I ran "make clean" and then ran "make" .  I had a few warnings that various Qt directories could not be found similar to "warning: directory not found for option '-F/Users/chris/Qt//5.1.0/clang_64/qttools/lib'" it turns out this is a known bug with qmake, QTBUG-28336, that hadn't shown up until more modularization of Qt for Qt5.1.  But long after the warnings and it was starting to look like it was getting close to finishing I got a list of eight duplicate symbols and the following error. 

"ld: 8 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [pylupdate5] Error 1
make: *** [sub-pylupdate-make_first-ordered] Error 2""

I was able to find a work around for the warnings by creating symlinks to the actual directories.  Doing this though did not solve the duplicate symbols problem.  

Running "make clean" and "make --silent"  results in the following,

"Makefile:1481: warning: overriding commands for target `moc_translator.o'
Makefile:989: warning: ignoring old commands for target `moc_translator.o'
duplicate symbol __ZN10Translator18qt_static_metacallEP7QObjectN11QMetaObject4CallEiPPv in:
    moc_translator.o
duplicate symbol __ZNK10Translator10metaObjectEv in:
    moc_translator.o
duplicate symbol __ZN10Translator16staticMetaObjectE in:
    moc_translator.o
duplicate symbol __ZN10Translator11qt_metacastEPKc in:
    moc_translator.o
duplicate symbol __ZN10Translator11qt_metacallEN11QMetaObject4CallEiPPv in:
    moc_translator.o
duplicate symbol __ZTV10Translator in:
    moc_translator.o
duplicate symbol __ZTI10Translator in:
    moc_translator.o
duplicate symbol __ZTS10Translator in:
    moc_translator.o
ld: 8 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [pylupdate5] Error 1
make: *** [sub-pylupdate-make_first-ordered] Error 2"

So there were two warnings that were probably there prior and I missed them among all the echoed commands and are clearly connected with the duplicate symbols.  What I have not been able to figure out though is exactly why this is happing and how to fix it.  I have not manually edited any of the PyQt files and I would think "make clean" should have taken care of duplicates from my prior install of PyQt5 left over in the sources directory.  

I'm hoping that someone with more knowledge and experience can point me in the right direction for solving this.

Thank you kindly,
~Chris









More information about the PyQt mailing list