Difference between revisions of "Development on Linux"

From GIMX
Jump to: navigation, search
m (Adding dependencies for Fedora)
 

(47 intermediate revisions by one other user not shown)

Line 5: Line 5:
 
==Install development packages== <!--T:2-->
 
==Install development packages== <!--T:2-->
  
    <!--T:3-->
+
<!--T:27-->
sudo apt-get install subversion g++ libwxgtk2.8-dev libbluetooth-dev libglib2.0-dev libxml2-dev libusb-dev libusb-1.0-0-dev libncursesw5-dev gettext xterm xdg-open
+
On Ubuntu 20.04:<br />
patch and libxi-dev were also required before r1277.
+
<code>
 +
sudo apt-get install build-essential pkg-config git g++ libwxgtk3.0-gtk3-dev libbluetooth-dev libxml2-dev libusb-1.0-0-dev libncursesw5-dev gettext xterm xdg-utils libmhash-dev libcurl4-gnutls-dev libxi-dev libx11-dev</code>
  
<!--T:4-->
+
<!--T:27-->
On Fedora: yum -y install wxGTK-devel bluez-libs-devel glib2-devel libxml2-devel libXi-devel libusb-devel (to be completed)
+
On Ubuntu 18.04 / Raspbian Stretch:<br />
 +
<code>
 +
sudo apt-get install build-essential pkg-config git g++ libwxgtk3.0-dev libbluetooth-dev libxml2-dev libusb-1.0-0-dev libncursesw5-dev gettext xterm xdg-utils libmhash-dev libcurl4-gnutls-dev libxi-dev libx11-dev</code>
  
==Compile a patched SDL library (not required anymore since r1277)== <!--T:5-->
+
<!--T:3-->
 +
On Ubuntu 14.04:<br />
 +
<code>
 +
sudo apt-get install git g++ libwxgtk2.8-dev libbluetooth-dev libxml2-dev libusb-1.0-0-dev libncursesw5-dev gettext xterm xdg-utils libmhash-dev libcurl4-gnutls-dev libxi-dev libx11-dev</code>
  
    <!--T:6-->
+
<!--T:22-->
wget http://www.libsdl.org/release/SDL-1.2.14.tar.gz
+
On Raspbian Jessie:<br />
    tar xzvf SDL-1.2.14.tar.gz
+
<code>
    svn export http://diyps3controller.googlecode.com/svn/trunk/libsdl/patch
+
sudo apt-get install build-essential pkg-config git g++ libwxgtk2.8-dev libbluetooth-dev libxml2-dev libusb-1.0-0-dev libncursesw5-dev gettext xterm xdg-utils libmhash-dev libcurl4-gnutls-dev libxi-dev libx11-dev</code>
    cd SDL-1.2.14
 
    patch -p1 < ../patch
 
    ./configure ; make
 
    cd ..
 
  
==Copy SDL headers and .so (not required anymore since r1277)== <!--T:7-->
+
<!--T:4-->
 
+
On Fedora:<br />
    <!--T:8-->
+
<code>
mkdir -p libsdl/lib
+
dnf -y install wxGTK-devel bluez-libs-devel glib2-devel libxml2-devel libXi-devel libusb-devel libcurl-devel ncurses-devel mhash-devel(to be completed)</code>
    mkdir -p libsdl/include/SDL
 
    cp SDL-1.2.14/build/.libs/libSDL.so libsdl/lib
 
    cp SDL-1.2.14/include/* libsdl/include/SDL
 
  
 
==Download GIMX sources== <!--T:9-->
 
==Download GIMX sources== <!--T:9-->
  
    <!--T:10-->
+
<!--T:10-->
svn checkout http://diyps3controller.googlecode.com/svn/trunk/GIMX
+
<code>
 +
git clone -b master --single-branch --depth 1 --recursive -j8 <nowiki>https://github.com/matlo/GIMX.git</nowiki></code>
  
 
==Compile== <!--T:11-->
 
==Compile== <!--T:11-->
  
    <!--T:12-->
+
<!--T:12-->
cd GIMX
+
<code>
    make -j 2
+
cd GIMX<br />
 +
make -j 2</code>
  
 
<!--T:13-->
 
<!--T:13-->
Line 47: Line 48:
 
==Install== <!--T:14-->
 
==Install== <!--T:14-->
  
    <!--T:15-->
+
<!--T:15-->
sudo make install
+
<code>
 +
sudo make install</code>
 +
 
 +
==Set the setuid== <!--T:19-->
 +
 
 +
<!--T:20-->
 +
A few gimx binaries need root priviledges.
 +
 
 +
<!--T:21-->
 +
<code>
 +
sudo chmod u+s /usr/bin/gimx /usr/bin/sixaddr /usr/bin/bdaddr /usr/bin/hcirevision</code>
  
==Set Input Device Permissions (required since r1277)== <!--T:16-->
+
==Set Input Device Permissions== <!--T:16-->
  
 
<!--T:17-->
 
<!--T:17-->
 
One way to give read permissions to GIMX is to create a special group, change /dev/input/event* group ownership to that group, and then make the gimx binaries setgid to that group.
 
One way to give read permissions to GIMX is to create a special group, change /dev/input/event* group ownership to that group, and then make the gimx binaries setgid to that group.
  
groupadd -f input
+
<!--T:18-->
+
<code>
echo "KERNEL==\"event*\", NAME=\"input/%k\", MODE:=\"660\", GROUP=\"input\"" > /etc/udev/rules.d/99-gimx-input.rules
+
sudo su<br />
echo "KERNEL==\"js*\", NAME=\"input/%k\", MODE:=\"664\", GROUP=\"input\"" >> /etc/udev/rules.d/99-gimx-input.rules
+
 
chgrp input /dev/input/event* /dev/input/js*
+
<!--T:23-->
+
groupadd -f input<br />
chgrp input /usr/bin/gimx-config /usr/bin/gimx-fpsconfig /usr/bin/gimx-bluetooth /usr/bin/gimx-serial
+
 
chmod g+s /usr/bin/gimx-config /usr/bin/gimx-fpsconfig /usr/bin/gimx-bluetooth /usr/bin/gimx-serial
+
<!--T:24-->
 
+
echo "KERNEL==\"event*\", NAME=\"input/%k\", MODE:=\"660\", GROUP=\"input\"" > /etc/udev/rules.d/99-gimx-input.rules<br />
 +
echo "KERNEL==\"js*\", NAME=\"input/%k\", MODE:=\"664\", GROUP=\"input\"" >> /etc/udev/rules.d/99-gimx-input.rules<br />
 +
chgrp -f input /dev/input/event* /dev/input/js*<br />
 +
chmod -f g+rw /dev/input/event* /dev/input/js*<br />
 +
 
 +
<!--T:25-->
 +
chgrp input /usr/bin/gimx-config /usr/bin/gimx-fpsconfig /usr/bin/gimx-launcher<br />
 +
chmod g+s /usr/bin/gimx-config /usr/bin/gimx-fpsconfig /usr/bin/gimx-launcher<br />
 +
 
 +
<!--T:26-->
 +
exit</code>
 
</translate>
 
</translate>

Latest revision as of 13:35, 17 February 2022

Other languages:
English • ‎français

This wiki explains how to compile GIMX from a Linux terminal.

Install development packages

On Ubuntu 20.04:
sudo apt-get install build-essential pkg-config git g++ libwxgtk3.0-gtk3-dev libbluetooth-dev libxml2-dev libusb-1.0-0-dev libncursesw5-dev gettext xterm xdg-utils libmhash-dev libcurl4-gnutls-dev libxi-dev libx11-dev

On Ubuntu 18.04 / Raspbian Stretch:
sudo apt-get install build-essential pkg-config git g++ libwxgtk3.0-dev libbluetooth-dev libxml2-dev libusb-1.0-0-dev libncursesw5-dev gettext xterm xdg-utils libmhash-dev libcurl4-gnutls-dev libxi-dev libx11-dev

On Ubuntu 14.04:
sudo apt-get install git g++ libwxgtk2.8-dev libbluetooth-dev libxml2-dev libusb-1.0-0-dev libncursesw5-dev gettext xterm xdg-utils libmhash-dev libcurl4-gnutls-dev libxi-dev libx11-dev

On Raspbian Jessie:
sudo apt-get install build-essential pkg-config git g++ libwxgtk2.8-dev libbluetooth-dev libxml2-dev libusb-1.0-0-dev libncursesw5-dev gettext xterm xdg-utils libmhash-dev libcurl4-gnutls-dev libxi-dev libx11-dev

On Fedora:
dnf -y install wxGTK-devel bluez-libs-devel glib2-devel libxml2-devel libXi-devel libusb-devel libcurl-devel ncurses-devel mhash-devel(to be completed)

Download GIMX sources

git clone -b master --single-branch --depth 1 --recursive -j8 https://github.com/matlo/GIMX.git

Compile

cd GIMX
make -j 2

Replace "2" with your number of CPU cores.

Install

sudo make install

Set the setuid

A few gimx binaries need root priviledges.

sudo chmod u+s /usr/bin/gimx /usr/bin/sixaddr /usr/bin/bdaddr /usr/bin/hcirevision

Set Input Device Permissions

One way to give read permissions to GIMX is to create a special group, change /dev/input/event* group ownership to that group, and then make the gimx binaries setgid to that group.

sudo su

groupadd -f input

echo "KERNEL==\"event*\", NAME=\"input/%k\", MODE:=\"660\", GROUP=\"input\"" > /etc/udev/rules.d/99-gimx-input.rules
echo "KERNEL==\"js*\", NAME=\"input/%k\", MODE:=\"664\", GROUP=\"input\"" >> /etc/udev/rules.d/99-gimx-input.rules
chgrp -f input /dev/input/event* /dev/input/js*
chmod -f g+rw /dev/input/event* /dev/input/js*

chgrp input /usr/bin/gimx-config /usr/bin/gimx-fpsconfig /usr/bin/gimx-launcher
chmod g+s /usr/bin/gimx-config /usr/bin/gimx-fpsconfig /usr/bin/gimx-launcher

exit