32-битные библиотеки wxGTK (он же wxWidgets) в 64-битной системе
Здравствуйте. Решил я установить PCSX2. Скачал исходный код, сделал cmake . и увидел ошибку:
CMake Error at CMakeLists.txt:15 (message): PCSX2 does not support 64bits environment. Please install a 32bits chroot or a 32bits OS. PCSX2 have neither no plan to support the 64bits architecture in the future. It will need a complete rewrite of the core emulator and a lots of time However when linux distribution will support properly multi-arch package, it will be at least possible to easily compile and install PCSX2 witout too much hassle (the chroot environment) -- Configuring incomplete, errors occurred!
Ладно, не дурак, удалил из CMakeLists.txt if/then, который проверяет систему на 64-битность. Затем установил пару зависимостей (glew, SparseHash) и подготовка к компиляции оказалась завершена:
zenitur@athlon64x2 ~/Downloads/pcsx2-0.9.8-r4600-sources/build $ nano ../CMakeLists.txt zenitur@athlon64x2 ~/Downloads/pcsx2-0.9.8-r4600-sources/build $ cmake .. -- BuildType set to Devel by default -- Disable the stripping by default in Devel build !!! -- Use internal version of Soundtouch by default. Note: There have been issues in the past with sound quality depending on the version of Soundtouch Use -DFORCE_INTERNAL_SOUNDTOUCH=FALSE at your own risk -- Install localization file in bin/Langs by default -- Found Freetype: /usr/lib64/libfreetype.so -- Found GTK2_GTK: /usr/lib64/libgtk-x11-2.0.so -- Looking for XOpenDisplay in /usr/lib64/libX11.so;/usr/lib64/libXext.so -- Looking for XOpenDisplay in /usr/lib64/libX11.so;/usr/lib64/libXext.so - found -- Looking for gethostbyname -- Looking for gethostbyname - found -- Looking for connect -- Looking for connect - found -- Looking for remove -- Looking for remove - found -- Looking for shmat -- Looking for shmat - found -- Looking for IceConnectionNumber in ICE -- Looking for IceConnectionNumber in ICE - found -- Found X11: /usr/lib64/libX11.so -- Found ALSA: /usr/lib64/libasound.so -- Found BZip2: /usr/lib64/libbz2.so -- Looking for BZ2_bzCompressInit in /usr/lib64/libbz2.so -- Looking for BZ2_bzCompressInit in /usr/lib64/libbz2.so - found -- Found JPEG: /usr/lib64/libjpeg.so -- Looking for include files CMAKE_HAVE_PTHREAD_H -- Looking for include files CMAKE_HAVE_PTHREAD_H - found -- Looking for pthread_create in pthreads -- Looking for pthread_create in pthreads - not found -- Looking for pthread_create in pthread -- Looking for pthread_create in pthread - found -- Found Threads: TRUE -- Found Subversion: /usr/bin/svn (found version "1.6.15") -- Found wxWidgets: TRUE -- Found ZLIB: /usr/include (found version "1.2.5") -- Found Cg: /opt/nvidia-cg-toolkit/lib64/libCg.so;/opt/nvidia-cg-toolkit/lib64/libCgGL.so -- Found GLEW: /usr/lib64/libGLEW.so -- Found PortAudio: /usr/lib64/libportaudio.so -- Found SparseHash: /usr/include -- Use internal pcsx2 SoundTouch library -- Skip build of GSdx: miss some dependencies -- check these libraries -> opengl, X11, pcsx2 SDL -- Configuring done -- Generating done -- Build files have been written to: /home/zenitur/Downloads/pcsx2-0.9.8-r4600-sources/build zenitur@athlon64x2 ~/Downloads/pcsx2-0.9.8-r4600-sources/build $
Замечательно. При этом я совершенно спокоен за наличие 32-битных библиотек: у меня есть оверлей pcsx2, который содержит очень старый pcsx2, коммит 1736 (до миграции на новую систему сборки и wxWidgets одновременно), который собирается, и оверлей содержит ebuild с nvidia-cg-toolkit с USE-флагом multilib (устанавливающий и 32-, и 64-битные библиотеки). Но я ошибся:
[ 12%] Building CXX object common/src/Utilities/CMakeFiles/Utilities.dir/AlignedMalloc.cpp.o In file included from /home/zenitur/Downloads/pcsx2-0.9.8-r4600-sources/common/include/Utilities/Dependencies.h:182, from /home/zenitur/Downloads/pcsx2-0.9.8-r4600-sources/common/src/Utilities/PrecompiledHeader.h:21, from /home/zenitur/Downloads/pcsx2-0.9.8-r4600-sources/common/src/Utilities/AlignedMalloc.cpp:19: /usr/include/wx-2.8/wx/string.h:827: ошибка: ‘wxChar& wxString::operator[](unsigned int)’ cannot be overloaded /usr/include/wx-2.8/wx/string.h:824: ошибка: with ‘wxChar& wxString::operator[](size_t)’ make[2]: *** [common/src/Utilities/CMakeFiles/Utilities.dir/AlignedMalloc.cpp.o] Ошибка 1 make[1]: *** [common/src/Utilities/CMakeFiles/Utilities.dir/all] Ошибка 2 make: *** [all] Ошибка 2
Ладно, я не дурак: выше же меня предупреждали о возможных проблемах с SoundTouch, и дан параметр для его отключения. И всё равно та же ошибка повторилась с другим компонентом. Тогда я начал искать причину и нашёл вот что:
zenitur@athlon64x2 ~/Downloads/pcsx2-0.9.8-r4600-sources/build $ ls /usr/lib32/lib[tab]wrap.so zenitur@athlon64x2 ~/Downloads/pcsx2-0.9.8-r4600-sources/build $ ls /usr/lib64/libwx_ Display all 102 possibilities? (y or n) libwx_baseu-2.8.so libwx_gtk2u_html-2.8.so libwx_baseu-2.8.so.0 libwx_gtk2u_html-2.8.so.0 libwx_baseu-2.8.so.0.8.0 libwx_gtk2u_html-2.8.so.0.8.0 libwx_baseu-2.9.so libwx_gtk2u_html-2.9.so libwx_baseu-2.9.so.1 libwx_gtk2u_html-2.9.so.1 libwx_baseu-2.9.so.1.0.0 libwx_gtk2u_html-2.9.so.1.0.0 libwx_baseu_net-2.8.so libwx_gtk2u_media-2.8.so libwx_baseu_net-2.8.so.0 libwx_gtk2u_media-2.8.so.0 libwx_baseu_net-2.8.so.0.8.0 libwx_gtk2u_media-2.8.so.0.8.0 libwx_baseu_net-2.9.so libwx_gtk2u_media-2.9.so libwx_baseu_net-2.9.so.1 libwx_gtk2u_media-2.9.so.1 libwx_baseu_net-2.9.so.1.0.0 libwx_gtk2u_media-2.9.so.1.0.0 libwx_baseu_xml-2.8.so libwx_gtk2u_ogl-2.8.so libwx_baseu_xml-2.8.so.0 libwx_gtk2u_ogl-2.8.so.0 libwx_baseu_xml-2.8.so.0.8.0 libwx_gtk2u_ogl-2.8.so.0.8.0 libwx_baseu_xml-2.9.so libwx_gtk2u_plot-2.8.so libwx_baseu_xml-2.9.so.1 libwx_gtk2u_plot-2.8.so.0 libwx_baseu_xml-2.9.so.1.0.0 libwx_gtk2u_plot-2.8.so.0.8.0 libwx_gtk2u_adv-2.8.so libwx_gtk2u_propgrid-2.9.so libwx_gtk2u_adv-2.8.so.0 libwx_gtk2u_propgrid-2.9.so.1 libwx_gtk2u_adv-2.8.so.0.8.0 libwx_gtk2u_propgrid-2.9.so.1.0.0 libwx_gtk2u_adv-2.9.so libwx_gtk2u_qa-2.8.so libwx_gtk2u_adv-2.9.so.1 libwx_gtk2u_qa-2.8.so.0 --More--
Нет 32-битных библиотек wxWidgets. Где их взять? Есть вариант "скомпилировать вручную в какой-нибудь /home/zenitur/32bit, потом взять каталог lib оттуда и переписать содержимое в /usr/local/lib32", но это же неправильно. Вдруг есть способ получше?
- Для комментирования войдите или зарегистрируйтесь
сильно смахивает на ересь
сильно смахивает на ересь ё14443
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)