2017-03-22 4 views
0

는 최근, Qt4를 설치했습니다. 안타깝게도,이 응용 프로그램은 또한 그것의 mlab 모듈을 수입하려고 할 때 지금 세그 폴트 것 mayavi을 사용했다. .bashrc에서 환경 변수를 설정하는 방법에 관한 몇 가지 제안하게되었다 주변에 인터넷 검색을분명한 Qt4/Qt5 충돌을 어떻게 해결할 수 있습니까? 이미 설치된 일부 <code>Qt5</code> 라이브러리를했다하더라도 응용 프로그램이 <code>Qt4</code>을 요구하는 것 같았다 때문에

[email protected]:~$ python 
Python 2.7.12 (default, Nov 19 2016, 06:48:10) 
[GCC 5.4.0 20160609] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import vtk 
>>> from pyface import api as pyface 
QMetaType::registerType: Binary compatibility break -- Size mismatch for  type 'QUuid' [30]. Previously registered size 16, now registering size 0. 
Aborted (core dumped) 
[email protected]:~$ 

:

나는 충돌을 일으킬 필요하다 둘 다 다음과 같은 수입으로는 segfault의 원인을 관리
export QTCHOOSER_RUNTOOL=qtconfig 
export QT_SELECT=4 
export QT_API='pyside' 
export ETS_TOOLKIT='qt4' 

나는 다소 맹목적하지만 성공하지 않고, 이러한 사용했습니다.

내 문제가 Qt4/Qt5 충돌로 인한 것일 수도 있습니다. 그렇다면 어떻게해야합니까?

============================================== ================= 조금 더 조사했습니다.

[email protected]:~/Downloads/temp3/mne-python$ python 
Python 2.7.12 (default, Nov 19 2016, 06:48:10) 
[GCC 5.4.0 20160609] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from vtk.vtkCommonCore import * 
>>> from PySide.QtGui import * 
QMetaType::registerType: Binary compatibility break -- Size mismatch for type 'QUuid' [30]. Previously registered size 16, now registering size 0. 
Aborted (core dumped) 

vtk.vtkCommonCorevtkCommonCorePython을 수입 한 줄을 포함하고, 이것은 .so를 파일 : 지금 다음 두 수입품이 충돌을 얻을 수 있습니다.

마찬가지로, PySide.QtGui도 .so를 파일입니다.

그래서, 내 다음 단계는 /usr/local/lib/python2.7/dist-packages/PySide/QtGui.so/usr/lib/python2.7/dist-packages/vtk/vtkCommonCorePython.x86_64-linux-gnu.so가 의존 파일을 .SO 확인할하는 것이 었습니다.

[email protected]:/usr/lib/python2.7/dist-packages/vtk$ ldd -v vtkCommonCorePython.x86_64-linux-gnu.so 
    linux-vdso.so.1 => (0x00007fff28fc0000) 
    libvtkCommonCorePython27D-6.2.so.6.2 => /usr/lib/x86_64-linux-gnu/libvtkCommonCorePython27D-6.2.so.6.2 (0x00007f0488925000) 
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f04885a2000) 
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f04881d9000) 
    libvtkWrappingPython27Core-6.2.so.6.2 => /usr/lib/x86_64-linux-gnu/libvtkWrappingPython27Core-6.2.so.6.2 (0x00007f0487fac000) 
    libvtkCommonCore-6.2.so.6.2 => /usr/lib/x86_64-linux-gnu/libvtkCommonCore-6.2.so.6.2 (0x00007f0487a7d000) 
    libpython2.7.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 (0x00007f04874ef000) 
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f04871e6000) 
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f0486fcf000) 
    /lib64/ld-linux-x86-64.so.2 (0x000055b9eee1f000) 
    libvtksys-6.2.so.6.2 => /usr/lib/x86_64-linux-gnu/libvtksys-6.2.so.6.2 (0x00007f0486d8a000) 
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f0486b6c000) 
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f0486952000) 
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f048674e000) 
    libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f048654a000) 

이 :

[email protected]:/usr/local/lib/python2.7/dist-packages/PySide$ ldd -v /usr/local/lib/python2.7/dist-packages/PySide/QtGui.so 
    linux-vdso.so.1 => (0x00007fff37bfc000) 
    libpyside-python2.7.so.1.2 (0x00007ff4672cf000) 
    libpython2.7.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 (0x00007ff466cfa000) 
    libshiboken-python2.7.so.1.2 (0x00007ff466ac6000) 
    libQtGui.so.4 => /usr/lib/x86_64-linux-gnu/libQtGui.so.4 (0x00007ff465dd2000) 
    libQtCore.so.4 => /usr/lib/x86_64-linux-gnu/libQtCore.so.4 (0x00007ff4658de000) 
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007ff46555c000) 
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007ff465346000) 
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff464f7c000) 
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007ff464d5f000) 
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007ff464b45000) 
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007ff464940000) 
    libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007ff46473d000) 
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ff464434000) 
    libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007ff4641f0000) 
    libaudio.so.2 => /usr/lib/x86_64-linux-gnu/libaudio.so.2 (0x00007ff463fd7000) 
    libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007ff463cc6000) 
    libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007ff463aa0000) 
    libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007ff4637f6000) 
    libgobject-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007ff4635a3000) 
    libSM.so.6 => /usr/lib/x86_64-linux-gnu/libSM.so.6 (0x00007ff46339a000) 
    libICE.so.6 => /usr/lib/x86_64-linux-gnu/libICE.so.6 (0x00007ff463180000) 
    libXi.so.6 => /usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00007ff462f70000) 
    libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007ff462d65000) 
    libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007ff462b53000) 
    libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007ff462819000) 
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007ff462610000) 
/lib64/ld-linux-x86-64.so.2 (0x000055bd99ece000) 
    libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007ff4623e7000) 
    libXt.so.6 => /usr/lib/x86_64-linux-gnu/libXt.so.6 (0x00007ff46217d000) 
    libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007ff461f79000) 
    libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007ff461d09000) 
    libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007ff461b00000) 
    libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007ff4618fb000) 
    libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007ff4616d8000) 
    libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007ff4614d2000) 

/usr/local/lib/python2.7/dist-packages/PySide/QtGui.so는 Qt는 라이브러리에 대한 직접 연결을 갖고있는 것 같아요, 그래서 어떻게/왜 이해가 안 나는이이었다 무엇을 발견

vtk 가져 오기가 Qt와 관련된 모든 것을 방해합니다.

마지막으로, /usr/lib/x86_64-linux-gnu/libQt...so 파일의 Qt 버전이 궁금합니다. 별도로 vtk

>>> vtk.VTK_MAJOR_VERSION 
6 
>>> vtk.VTK_MINOR_VERSION 
2 
>>> 

과의

[email protected]:~$ qmake --version 
QMake version 2.01a 
Using Qt version 4.8.7 in /usr/lib/x86_64-linux-gnu 

나는 또한 확인 내 버전, PySide의 내 버전 :

>>> import PySide 
>>> PySide.__version__ 
'1.2.4' 

이 시점에서, 난 그래서, 나는이 시도 단지 더 의아해했다. 내 문제가 Qt4/Qt5 충돌입니까? (I 생각 때문에) 그렇지 않다면, 왜 오류가있는 원세그 오류받을 수 있나요 :

QMetaType::registerType: Binary compatibility break -- Size mismatch for  type 'QUuid' [30]. Previously registered size 16, now registering size 0. 
    Aborted (core dumped) 

그렇다면, 왜 난 단지 Qt는 한 버전을 사용하고있는 것으로 보인다합니까? 가장 중요한 것은 어떻게 해결할 수 있습니까?

답변

0

Qt 빌드의 기본 구성에서 주어진 프로세스는 Qt 버전을 하나만 사용할 수 있습니다. Qt 5를 사용하는 파이썬 모듈과 Qt 4를 사용하는 파이썬 모듈을로드하는 경우 많은 심볼이 겹치는 문제가 있습니다.

Qt 4를 응용 프로그램에서 병렬로 사용하려면 Qt 버전 중 하나를 자체 네임 스페이스에 컴파일하고 해당 Qt 버전을 사용하는 모듈을 다시 빌드해야합니다. 그렇게하면 심볼이 충돌하지 않고 동일한 프로세스가 여러 Qt 버전을 사용할 수 있습니다.

+0

먼저 제거를 시도했지만 (sudo make uninstall) 문제는 지속됩니다. 내 컴퓨터에는 다른 Qt4 파일이 있습니다. 그래서, 지금, 나는 조금 당황 스럽다. 나는/var/lib/dpkg/info를 통해 적절한 시간에 설치된 것을 찾아 수동으로 삭제할 수 있습니다. 그러나, 나는 그것이 나보다 더 많은 문제를 사지 않을까 두려워 .... – user1245262

+0

아무것도 제거하지 마십시오! Qt는 여러 버전이 공존 할 수 있도록 설계되었습니다. 두 개 이상의 버전이 설치되어있는 것은 전적으로 일반적인 현상입니다. 내 개발 시스템에는 현재 약 20 개의 Qt 버전이 설치되어 있습니다. 또한 패키지 관리자를 해결하려고 노력 중이며 상태를 손상시킬 수도 있습니다. 그렇게하지 마십시오. 너는 의미가 없어! –

+0

제 대답은 제가 말하는 것은 여러분이 컴파일해야한다는 것입니다. '-qtnamespace Qt'를'configure'에 넘겨줌으로써 자체 네임 스페이스의 Qt 4를 구현할 수 있습니다. 다음 그것을 구축하십시오. 그리고 나서 Qt 버전을 사용하여 Qt-4 기반의 파이썬 모듈을 빌드하십시오. 그리고 다른 모듈이 사용하는 Qt 5와 충돌하지 않습니다. –

관련 문제