• Login
  • Register
  • Dolphin Forums
  • Home
  • FAQ
  • Download
  • Wiki
  • Code


Dolphin, the GameCube and Wii emulator - Forums › Dolphin Emulator Discussion and Support › Development Discussion v
« Previous 1 ... 25 26 27 28 29 ... 114 Next »

Dolphin as AppImage on Linux
View New Posts | View Today's Posts

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Thread Modes
Dolphin as AppImage on Linux
07-09-2016, 12:39 AM (This post was last modified: 07-12-2016, 07:03 PM by Anti-Ultimate.)
#1
Anti-Ultimate Offline
Above and Beyond
*******
Posts: 1,957
Threads: 29
Joined: May 2010
I thought distributing Dolphin via AppImage would make it more similiar to Windows and OSX. I don't feel like installing a new Dolphin version every time I want to try a development version. What if I want to test several versions of Dolphin?

So I wrote this script that compiles Dolphin into an AppImage. You'll still need to install the development libraries as instructed here:
https://wiki.dolphin-emu.org/index.php?title=Building_Dolphin_on_Linux

Spoiler: (Show Spoiler)

Code:
# Written by Anti-Ultimate for creating an AppImage of the latest dolphin master
# Feel free to change this in any way

mkdir -p dolphin
cd dolphin

# Pull latest changes
git pull

#Get current version
VER=$(git rev-list 5.0.. --count)
BRANCH=$(git rev-parse --abbrev-ref HEAD)

# Build latest Dolphin
mkdir build
cd build



cmake  .. -DLINUX_LOCAL_DEV=TRUE
make -j5
cp -r ../Data/Sys Binaries/

cd Binaries

# We don't need the nogui application, AppRun calls "just" the GUI
rm dolphin-emu-nogui

mkdir -p lib
mkdir -p lib/x86_64-linux-gnu

# Dependencies

# Written for Ubuntu 16.04 LTS
# If you want to use this on another distro, you'll need to check what version of the libraries it uses

# libao
cp -a /usr/lib/x86_64-linux-gnu/libao.so.* lib/x86_64-linux-gnu

# libenet
cp -a /usr/lib/x86_64-linux-gnu/libenet.so.* lib/x86_64-linux-gnu

#libjpeg
cp -a /usr/lib/x86_64-linux-gnu/libjpeg.so.* lib/x86_64-linux-gnu

# libmbedcrypto
cp -a /usr/lib/x86_64-linux-gnu/libmbedcrypto.so.* lib/x86_64-linux-gnu

# libmbedtls
cp -a /usr/lib/x86_64-linux-gnu/libmbedtls.so.* lib/x86_64-linux-gnu

# libmbedx509
cp -a /usr/lib/x86_64-linux-gnu/libmbedx509.so.* lib/x86_64-linux-gnu

# libsfml-network
cp -a /usr/lib/x86_64-linux-gnu/libsfml-network.so.* lib/x86_64-linux-gnu

# libsfml-system
cp -a /usr/lib/x86_64-linux-gnu/libsfml-system.so.* lib/x86_64-linux-gnu

# libsnappy
cp -a /usr/lib/x86_64-linux-gnu/libsnappy.so.* lib/x86_64-linux-gnu

# libsoil
cp -a /usr/lib/libSOIL.so.* lib

#libsoundtouch
cp -a /usr/lib/x86_64-linux-gnu/libSoundTouch.so.* lib/x86_64-linux-gnu

#libminiupnpc
cp -a /usr/lib/x86_64-linux-gnu/libminiupnpc.so* lib/x86_64-linux-gnu

#libopenal
cp -a /usr/lib/x86_64-linux-gnu/libopenal.so.* lib/x86_64-linux-gnu

# libwx
cp -a /usr/lib/x86_64-linux-gnu/libwx_gtk2u_core-3.0.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libwx_gtk2u_aui-3.0.so* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libwx_gtk2u_adv-3.0.so* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so* lib/x86_64-linux-gnu

#libpng
cp -a /lib/x86_64-linux-gnu/libpng12.so.* lib/x86_64-linux-gnu

# libportaudio
cp -a /usr/lib/x86_64-linux-gnu/libportaudio.so.* lib/x86_64-linux-gnu

#libva
cp -a /usr/lib/x86_64-linux-gnu/libva.so.* lib/x86_64-linux-gnu

# ffmpeg
cp -a /usr/lib/x86_64-linux-gnu/libavcodec-ffmpeg.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libavformat-ffmpeg.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libswscale-ffmpeg.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libavutil-ffmpeg.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libswresample-ffmpeg.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libzvbi.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libxvidcore.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libx265.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libshine.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libschroedinger-1.0.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libopenjpeg.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libcrystalhd.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libssh-gcrypt.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libmodplug.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libgme.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libbluray.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libsoxr.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libwebp.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libtwolame.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libx264.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libmp3lame.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libgsm.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libjack.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/librtmp.so.* lib/x86_64-linux-gnu

# other libraries

cp -a /usr/lib/x86_64-linux-gnu/libnuma.so* lib/x86_64-linux-gnu
cp -a /usr/lib/pristine-tar/suse-bzip2/libbz2.so.* lib/x86_64-linux-gnu

cat > ./AppRun <<\EOF
#!/bin/bash
HERE=$(dirname $(readlink -f "${0}"))
echo "${HERE}"
ls "${HERE}"
export LD_LIBRARY_PATH="${HERE}/lib/x86_64-linux-gnu":"${HERE}/lib":$LD_LIBRARY_PATH
${HERE}/dolphin-emu
EOF

chmod a+x ./AppRun

cat > ./dolphin-emu.desktop <<\EOF
[Desktop Entry]
Version=1.0
Icon=dolphin-emu
Exec=dolphin-emu
Terminal=false
Type=Application
Categories=Game;Emulator;
Name=Dolphin Emulator
GenericName=Wii/GameCube Emulator
Comment=A Wii/GameCube Emulator
EOF

cp ../../Data/dolphin-emu.png .
cp ../../Data/dolphin-emu.desktop .

cd ..

wget -c "https://downloads.sourceforge.net/project/portable/64bit/AppImageAssistant%200.9.3-64bit"

chmod a+x "AppImageAssistant 0.9.3-64bit"
./"AppImageAssistant 0.9.3-64bit" ./Binaries/ ./dolphin-emu-$BRANCH-5.0-$VER.AppImage

This contains the libraries needed to run Dolphin under a fresh Ubuntu 16.04 install, I don't really know what libraries other distros require.
However, once compiled on Ubuntu, it should be cross distro compatible. Obviously Ubuntu might ship with libraries that other distros don't ship with.

I compiled an AppImage of version 5.0-129 which works fine on my installation - It should work just fine on other Ubuntu 16.04 installations, but if there are libraries not included in this AppImage that aren't installed on your system either, it will tell you which ones are missing.

Also, it will only work on distros which ship with libraries that are as new or newer than Ubuntu due to glibc.

LIVE CD COMPATIBILITY
  • [color=#33cc33]Ubuntu 16.04 LTS[/color]
  • [color=#33cc33]Linux Mint 18[/color]
  • [color=#33cc33]Fedora 24 Workstation [/color]
  • [color=#33cc33]Antergos 2016.06.18[/color]
  • [color=#33cc33]Manjaro [/color]
  • [color=#33cc33]Debian Sid[/color]
DOES NOT WORK ON
  • [color=#ff3333]Anything lower than Ubuntu 16.04. Including: [/color]
  • [color=#ff3333]Debian 8 [/color]
It's not confirmed that it will work for you, if it doesn't please tell me what libraries are missing

Weekly updated builds here
https://drive.google.com/folderview?id=0B-tFnZC4LvDuXzBuM0Q2V2hSdTA&usp=sharing#list

Find
Reply
07-11-2016, 01:13 AM (This post was last modified: 07-11-2016, 05:18 PM by Anti-Ultimate.)
#2
Anti-Ultimate Offline
Above and Beyond
*******
Posts: 1,957
Threads: 29
Joined: May 2010
With the changes from:
https://github.com/dolphin-emu/dolphin/pull/3614

the AppImage should now be cross compatible

Spoiler: (Show Spoiler)





Code:
# Written for Ubuntu 16.04 LTS
# If you want to use this on another distro, you'll need to check what version of the libraries it uses

# libao
cp -a /usr/lib/x86_64-linux-gnu/libao.so.* lib/x86_64-linux-gnu

# libenet
cp -a /usr/lib/x86_64-linux-gnu/libenet.so.* lib/x86_64-linux-gnu

#libjpeg
cp -a /usr/lib/x86_64-linux-gnu/libjpeg.so.* lib/x86_64-linux-gnu

# libmbedcrypto
cp -a /usr/lib/x86_64-linux-gnu/libmbedcrypto.so.* lib/x86_64-linux-gnu

# libmbedtls
cp -a /usr/lib/x86_64-linux-gnu/libmbedtls.so.* lib/x86_64-linux-gnu

# libmbedx509
cp -a /usr/lib/x86_64-linux-gnu/libmbedx509.so.* lib/x86_64-linux-gnu

# libsfml-network
cp -a /usr/lib/x86_64-linux-gnu/libsfml-network.so.* lib/x86_64-linux-gnu

# libsfml-system
cp -a /usr/lib/x86_64-linux-gnu/libsfml-system.so.* lib/x86_64-linux-gnu

# libsoil
cp -a /usr/lib/libSOIL.so.* lib

#libsoundtouch
cp -a /usr/lib/x86_64-linux-gnu/libSoundTouch.so.* lib/x86_64-linux-gnu

#libminiupnpc
cp -a /usr/lib/x86_64-linux-gnu/libminiupnpc.so* lib/x86_64-linux-gnu

# libwx
cp -a /usr/lib/x86_64-linux-gnu/libwx_gtk2u_core-3.0.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libwx_gtk2u_aui-3.0.so* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libwx_gtk2u_adv-3.0.so* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so* lib/x86_64-linux-gnu

#libpng
cp -a /lib/x86_64-linux-gnu/libpng12.so.* lib/x86_64-linux-gnu

# libportaudio
cp -a /usr/lib/x86_64-linux-gnu/libportaudio.so.* lib/x86_64-linux-gnu

# ffmpeg
cp -a /usr/lib/x86_64-linux-gnu/libavcodec-ffmpeg.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libavformat-ffmpeg.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libswscale-ffmpeg.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libavutil-ffmpeg.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libswresample-ffmpeg.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libzvbi.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libxvidcore.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libx265.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libshine.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libschroedinger-1.0.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libopenjpeg.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libcrystalhd.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libssh-gcrypt.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libmodplug.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libgme.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libbluray.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libsoxr.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libwebp.so.* lib/x86_64-linux-gnu
cp -a /usr/lib/x86_64-linux-gnu/libtwolame.so.* lib/x86_64-linux-gnu

# other libraries

cp -a /usr/lib/x86_64-linux-gnu/libnuma.so* lib/x86_64-linux-gnu

cat > ./AppRun <<\EOF
#!/bin/bash
HERE=$(dirname $(readlink -f "${0}"))
echo "${HERE}"
ls "${HERE}"
export LD_LIBRARY_PATH="${HERE}/lib/x86_64-linux-gnu":"${HERE}/lib":$LD_LIBRARY_PATH
${HERE}/dolphin-emu
EOF

chmod a+x ./AppRun

cat > ./dolphin-emu.desktop <<\EOF
[Desktop Entry]
Version=1.0
Icon=dolphin-emu
Exec=dolphin-emu
Terminal=false
Type=Application
Categories=Game;Emulator;
Name=Dolphin Emulator
GenericName=Wii/GameCube Emulator
Comment=A Wii/GameCube Emulator
EOF

cp ../../Data/dolphin-emu.png .
cp ../../Data/dolphin-emu.desktop .

cd ..

wget -c "https://downloads.sourceforge.net/project/portable/64bit/AppImageAssistant%200.9.3-64bit"

chmod a+x "AppImageAssistant 0.9.3-64bit"
./"AppImageAssistant 0.9.3-64bit" ./Binaries/ ./dolphin-emu-5.0-$VER.AppImage




Not all dependencies are met however. Some distros stillship without libpng and other things.

First post now edited

Find
Reply
« Next Oldest | Next Newest »


  • View a Printable Version
  • Subscribe to this thread
Forum Jump:


Users browsing this thread: 1 Guest(s)



Powered By MyBB | Theme by Fragma

Linear Mode
Threaded Mode