64bit compilation woes
#1
So I am trying to get pcsx2 to compile on a 64bit system (Mint 17, based on Ubuntu 14.04) and I all the guides I'm finding appear to be extremely old and possibly out of date.

I tried installing the libs written under the debian section of the linux compilation guide in googlecode, but apt complains about things that will not be installed:

Code:
apt install libaio-dev:i386 libasound2-dev:i386 libbz2-dev:i386 libcg:i386 libcggl:i386 libegl1-mesa-dev:i386 libgl1-mesa-dev:i386 libglew-dev:i386 libglu1-mesa-dev:i386 libgtk2.0-dev:i386 libjpeg-dev:i386 libsdl1.2-dev:i386 libsoundtouch-dev:i386 libsparsehash-dev libwxbase2.8-dev:i386 libwxgtk2.8-dev:i386 libx11-dev:i386 nvidia-cg-dev:i386 nvidia-cg-toolkit portaudio19-dev:i386 zlib1g-dev:i386
Reading package lists... Done
Building dependency tree      
Reading state information... Done
libsparsehash-dev is already the newest version.
nvidia-cg-toolkit is already the newest version.
libcg:i386 is already the newest version.
libcg:i386 set to manually installed.
libcggl:i386 is already the newest version.
libcggl:i386 set to manually installed.
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
libgtk2.0-dev:i386 : Depends: gir1.2-gtk-2.0:i386 (= 2.24.23-0ubuntu1.1) but it is not going to be installed
                      Depends: libglib2.0-dev:i386 (>= 2.27.3) but it is not going to be installed
                      Depends: libgdk-pixbuf2.0-dev:i386 (>= 2.21.0) but it is not going to be installed
                      Depends: libpango1.0-dev:i386 (>= 1.20) but it is not going to be installed
                      Depends: libatk1.0-dev:i386 (>= 1.29.2) but it is not going to be installed
                      Depends: libcairo2-dev:i386 (>= 1.6.4-6.1) but it is not going to be installed
libsdl1.2-dev:i386 : Depends: libcaca-dev:i386 but it is not going to be installed
                      Depends: libpulse-dev:i386 but it is not going to be installed
portaudio19-dev:i386 : Depends: libjack-dev:i386
                        Depends: libportaudio2:i386 (= 19+svn20140130-1) but it is not going to be installed
                        Depends: libportaudiocpp0:i386 (= 19+svn20140130-1) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

If I manually add all these depend libs to the command, apt eventually agrees to install them all - on the condition that it removes a good part of my existing system:

Code:
The following packages will be REMOVED:
  aptdaemon apturl banshee caribou cinnamon cinnamon-bluetooth
  cinnamon-control-center cinnamon-screensaver cjs dolphin-emu-master eog
  gdebi gedit gir1.2-accountsservice-1.0 gir1.2-atk-1.0 gir1.2-atspi-2.0
  gir1.2-caribou-1.0 gir1.2-cinnamondesktop-3.0 gir1.2-clutter-1.0
  gir1.2-cmenu-3.0 gir1.2-cogl-1.0 gir1.2-coglpango-1.0 gir1.2-dee-1.0
  gir1.2-ebook-1.2 gir1.2-ebookcontacts-1.2 gir1.2-edataserver-1.2
  gir1.2-freedesktop gir1.2-gconf-2.0 gir1.2-gdata-0.0 gir1.2-gdkpixbuf-2.0
  gir1.2-gkbd-3.0 gir1.2-glib-2.0 gir1.2-gmenu-3.0 gir1.2-gnomebluetooth-1.0
  gir1.2-gnomedesktop-3.0 gir1.2-gnomekeyring-1.0 gir1.2-goa-1.0
  gir1.2-gst-plugins-base-0.10 gir1.2-gst-plugins-base-1.0
  gir1.2-gstreamer-0.10 gir1.2-gstreamer-1.0 gir1.2-gtk-2.0 gir1.2-gtk-3.0
  gir1.2-gtkclutter-1.0 gir1.2-gtksource-3.0 gir1.2-gudev-1.0 gir1.2-ibus-1.0
  gir1.2-json-1.0 gir1.2-messagingmenu-1.0 gir1.2-muffin-3.0
  gir1.2-networkmanager-1.0 gir1.2-nmgtk-1.0 gir1.2-notify-0.7
  gir1.2-packagekitglib-1.0 gir1.2-pango-1.0 gir1.2-peas-1.0 gir1.2-polkit-1.0
  gir1.2-soup-2.4 gir1.2-timezonemap-1.0 gir1.2-totem-1.0
  gir1.2-totem-plparser-1.0 gir1.2-upowerglib-1.0 gir1.2-vte-2.90
  gir1.2-webkit-3.0 gir1.2-wnck-3.0 gir1.2-xkl-1.0 gnome-bluetooth
  gnome-user-share gstreamer0.10-plugins-good gstreamer1.0-plugins-bad
  gstreamer1.0-plugins-good libaio-dev libasound2-plugins libatk-bridge2.0-dev
  libatk1.0-dev libavahi-client-dev libavahi-common-dev libcaca-dev
  libcairo2-dev libcairomm-1.0-dev libcanberra-pulse libcjs0c libegl1-mesa-dev
  libespeak1 libfarstream-0.1-0 libfluidsynth1 libfontconfig1-dev
  libfreetype6-dev libgdk-pixbuf2.0-dev libgirepository-1.0-1 libgl1-mesa-dev
  libglade2-dev libgles2-mesa-dev libglew-dev libglib2.0-dev libglu1-mesa-dev
  libgtk-3-dev libgtk2.0-dev libgtkglext1-dev libharfbuzz-dev libjack-jackd2-0
  libjack-jackd2-0:i386 libmuffin0 libosmesa6-dev libpango1.0-dev
  libpangox-1.0-dev libpeas-1.0-0 libpixman-1-dev libpng12-dev libportaudio2
  libportaudiocpp0 libpulse-dev libpurple0 libsdl-mixer1.2 libsdl1.2-dev
  libsdl2-dev libsdl2-gfx-dev libsdl2-image-dev libsdl2-mixer-2.0-0
  libsdl2-mixer-dev libsdl2-net-dev libsdl2-ttf-dev libslang2-dev
  libsoundtouch-dev libtotem0 libwayland-dev libwxbase2.8-dev libwxgtk2.8-dev
  libxcomposite-dev libxft-dev libxi-dev mdm mesa-common-dev
  mint-meta-cinnamon mint-meta-codecs mint-meta-core mintlocale mintstick
  mintwelcome nemo nemo-dropbox nemo-fileroller nemo-share nvidia-settings
  oneconf-common pidgin pidgin-libnotify pulseaudio
  pulseaudio-module-bluetooth pulseaudio-module-x11 python-aptdaemon
  python-aptdaemon.gtk3widgets python-gi python-gi-cairo python-gobject
  python-gtksourceview2 python-oneconf python-pyatspi python-pyatspi2
  python-ubuntu-sso-client python3-aptdaemon python3-aptdaemon.gtk3widgets
  python3-aptdaemon.pkcompat python3-gi python3-gi-cairo python3-oneconf
  python3-pyatspi screen-resolution-extra sessioninstaller speech-dispatcher
  system-config-printer-gnome totem totem-mozilla totem-plugins
  totem-plugins-extra widelands wx-common wx2.8-headers
The following NEW packages will be installed:
  apturl-kde docbook-xsl gir1.2-atk-1.0:i386 gir1.2-freedesktop:i386
  gir1.2-gdkpixbuf-2.0:i386 gir1.2-glib-2.0:i386 gir1.2-gtk-2.0:i386
  gir1.2-pango-1.0:i386 kate-data katepart kde-runtime kde-runtime-data
  kdelibs-bin kdelibs5-data kdelibs5-plugins kdesudo kdoctools
  language-selector-common libaio-dev:i386 libasound2-dev:i386
  libatk1.0-dev:i386 libattica0.4 libavahi-client-dev:i386
  libavahi-common-dev:i386 libboost-system1.54.0:i386 libbz2-dev:i386
  libc6-dev:i386 libcaca-dev:i386 libcairo-script-interpreter2:i386
  libcairo2-dev:i386 libdbus-1-dev:i386 libdlrestrictions1 libdrm-dev:i386
  libegl1-mesa-dev:i386 libegl1-mesa-drivers:i386 libexpat1-dev:i386
  libfontconfig1-dev:i386 libfreetype6-dev:i386 libgdk-pixbuf2.0-dev:i386
  libgirepository-1.0-1:i386 libgl1-mesa-dev:i386 libglew-dev:i386
  libglib2.0-dev:i386 libglu1-mesa-dev:i386 libgtk2.0-dev:i386
  libharfbuzz-dev:i386 libharfbuzz-gobject0:i386 libharfbuzz-icu0:i386
  libice-dev:i386 libicu52:i386 libjack-dev:i386 libjack0:i386
  libjpeg-dev:i386 libjpeg-turbo8-dev:i386 libjpeg8-dev:i386 libkactivities6
  libkatepartinterfaces4 libkcmutils4 libkde3support4 libkdeclarative5
  libkdecore5 libkdesu5 libkdeui5 libkdewebkit5 libkdnssd4 libkemoticons4
  libkfile4 libkhtml5 libkio5 libkjsapi4 libkjsembed4 libkmediaplayer4
  libknewstuff3-4 libknotifyconfig4 libkntlm4 libkparts4 libkpty4
  libkrosscore4 libktexteditor4 libkubuntu0 libkxmlrpcclient4 liblzo2-2:i386
  libmirclient-dev:i386 libmirclient7:i386 libmirclientplatform-mesa:i386
  libmirprotobuf-dev:i386 libmirprotobuf0:i386 libnepomuk4 libnepomukquery4a
  libnepomukutils4 libntrack-qt4-1 libntrack0 libopenvg1-mesa:i386
  libpango1.0-dev:i386 libpcre3-dev:i386 libpcrecpp0:i386 libphonon4
  libpixman-1-dev:i386 libplasma3 libpng12-dev:i386 libpolkit-qt-1-1
  libportaudio2:i386 libportaudiocpp0:i386 libprotobuf-dev:i386
  libprotobuf-lite8:i386 libprotobuf8:i386 libpthread-stubs0-dev:i386
  libpulse-dev:i386 libqapt2 libqapt2-runtime libqca2 libqt4-qt3support
  libsdl1.2-dev:i386 libslang2-dev:i386 libsm-dev:i386 libsolid4 libsoprano4
  libsoundtouch-dev:i386 libssh-4 libstreamanalyzer0 libstreams0
  libthreadweaver4 libwayland-cursor0:i386 libwayland-dev:i386
  libwayland-egl1-mesa:i386 libwxbase2.8-dev:i386 libwxbase3.0-0:i386
  libwxgtk2.8-dev:i386 libx11-dev:i386 libx11-xcb-dev:i386 libxau-dev:i386
  libxcb-dri2-0-dev:i386 libxcb-dri3-dev:i386 libxcb-glx0-dev:i386
  libxcb-present-dev:i386 libxcb-randr0:i386 libxcb-randr0-dev:i386
  libxcb-render0-dev:i386 libxcb-shape0:i386 libxcb-shape0-dev:i386
  libxcb-shm0-dev:i386 libxcb-sync-dev:i386 libxcb-xfixes0-dev:i386
  libxcb1-dev:i386 libxcomposite-dev:i386 libxcursor-dev:i386
  libxdamage-dev:i386 libxdmcp-dev:i386 libxext-dev:i386 libxfixes-dev:i386
  libxft-dev:i386 libxi-dev:i386 libxinerama-dev:i386 libxkbcommon0:i386
  libxrandr-dev:i386 libxrender-dev:i386 libxshmfence-dev:i386
  libxxf86vm-dev:i386 linux-libc-dev:i386 mesa-common-dev:i386
  mircommon-dev:i386 ntrack-module-libnl-0 nvidia-cg-dev:i386
  oxygen-icon-theme phonon phonon-backend-gstreamer
  phonon-backend-gstreamer-common phonon-backend-gstreamer1.0
  plasma-scriptengine-javascript portaudio19-dev:i386
  shared-desktop-ontologies soprano-daemon wx-common:i386 wx2.8-headers:i386
  zlib1g-dev:i386

I'm going to keep poking around, but is there a known "right" way to get around this issue?
Reply

Sponsored links

#2
It seem one lib is not compatible with multiarch... Install first all dev that don't complain then try 1 by 1 to know which one remove all your system.
Reply
#3
(06-29-2014, 05:13 PM)gregory Wrote: It seem one lib is not compatible with multiarch... Install first all dev that don't complain then try 1 by 1 to know which one remove all your system.

These packages attempt to remove their 64bit equivalent from the system:
Code:
libaio-dev:i386 libegl1-mesa-dev:i386 libgl1-mesa-dev:i386 libglew-dev:i386 libglu1-mesa-dev:i386 libsoundtouch-dev:i386 libwxbase2.8-dev:i386 libwxgtk2.8-dev:i386

These merely complain about unmet dependencies:
Code:
libgtk2.0-dev:i386 libsdl1.2-dev:i386 portaudio19-dev:i386

Among the dependencies, it seems libgirepository-1.0-1:i386 is the one trying to remove everything 64bit.
Reply
#4
This has been occuring for the past 2 years or so since 12.04 came out with multiarch. PPA version seems to effectively work around that. OR...Install 32 bit version inside a virtualbox and compile there, and transfer the finished product back to 64bit side. Sometimes that works.
OS: Linux Mint 17.2 64 bit (occasional Antergos/Arch user)
(I am no longer a Windows user)
CPU: Intel Pentium G3258
GPU: Nvidia GTX 650 Ti



Reply
#5
You can't install both -dev:amd64 and -dev:i386. But it is just annoying not critical because it won't break your system. You either compile 32bits or 64 bits. Unfortunately Debian halfly done the multiarch jobs! It is allowed to open bug report on distribution or asking update on already open bug report.

The only and real issue is libgirepository-1.0-1:i386 but who need it? I don't have it installed on my system.
Reply
#6
DaTankAC Wrote:This has been occuring for the past 2 years or so since 12.04 came out with multiarch. PPA version seems to effectively work around that. OR...Install 32 bit version inside a virtualbox and compile there, and transfer the finished product back to 64bit side. Sometimes that works
That would probably invalidate any effort to do -march=native, if not other optimizations

(06-30-2014, 09:25 AM)gregory Wrote: You can't install both -dev:amd64 and -dev:i386. But it is just annoying not critical because it won't break your system. You either compile 32bits or 64 bits. Unfortunately Debian halfly done the multiarch jobs! It is allowed to open bug report on distribution or asking update on already open bug report.

The only and real issue is libgirepository-1.0-1:i386 but who need it? I don't have it installed on my system.
That is indeed a headache-inducer...

gir1.2-glib-2.0:i386 is the one that needs libgirepository-1.0-1:i386.
All other gir packages depend on gir1.2-glib and various other dependencies, such as

Code:
libatk1.0-dev:i386 : Depends: gir1.2-atk-1.0:i386 (= 2.10.0-2ubuntu2) but it is not going to be installed
libgdk-pixbuf2.0-dev:i386 : Depends: gir1.2-gdkpixbuf-2.0:i386 (= 2.30.7-0ubuntu1) but it is not going to be installed
libgtk2.0-dev:i386 : Depends: gir1.2-gtk-2.0:i386 (= 2.24.23-0ubuntu1.1) but it is not going to be installed
libpango1.0-dev:i386 : Depends: gir1.2-pango-1.0:i386 (= 1.36.3-1ubuntu1) but it is not going to be installed
Reply
#7
I'm encountering this same problem with the exact same setup as you (only inside a virtual machine). I'm just installing 32 bit linux mint in a virtual machine so I don't have to mess with any of those compilation woes. PCSX2 by default builds for i486 (no joke), so compiling with -march=native is most likely going to break everything in an incredible way. Someone is working on flag cleanups at the moment, gregory told me in another thread, so it might not be too far off from PCSX2 having a sane flags system.
Reply
#8
You're joking. By default it is i686 + sse2. Newer CPU won't give you a lots more of instruction because you need to use them manually in C.

I'm not sure glib need gir stuff to run. I mean I don't have it on my x64 debian system only the i386 version.
Code:
list gir
ii  gir1.2-atk-1.0                        2.12.0-1                        i386         ATK accessibility toolkit (GObject introspection)
ii  gir1.2-freedesktop                    1.40.0-2                        i386         Introspection data for some FreeDesktop components
ii  gir1.2-gdkpixbuf-2.0                  2.30.7-1                        i386         GDK Pixbuf library - GObject-Introspection
ii  gir1.2-glib-2.0                       1.40.0-2                        i386         Introspection data for GLib, GObject, Gio and GModule
ii  gir1.2-gtk-2.0                        2.24.24-1                       i386         GTK+ graphical user interface library -- gir bindings
ii  gir1.2-pango-1.0                      1.36.3-1                        i386         Layout and rendering of internationalized text - gir bindings
ii  libgirepository-1.0-1                 1.40.0-2                        i386         Library for handling GObject introspection data (runtime library)
Reply
#9
D'oh. I completely forgot that PCSX2 turns on -sse2. The old Codeblocks files I've been messing with had pcsx2 to compile as 486 by default.
Reply
#10
Derp. But if I can't optimize by setting an alternative config_site at compile time, how am I to squeeze a few extra FPS?
Reply




Users browsing this thread: 1 Guest(s)