Compilation on Linux

Linux tux logo

Install package dependencies:


   sudo apt-get install g++ cmake qt5-default qtmultimedia5-dev \
       libqt5x11extras5-dev libbz2-dev libssl-dev libsqlcipher-dev \
       libupnp-dev libxss-dev rapidjson-dev

Additional dependencies for plugins:

   sudo apt-get install libavcodec-dev libcurl4-openssl-dev \
   libqt5multimedia5-plugins libspeexdsp-dev libxml2-dev libxslt1-dev


   sudo zypper install gcc-c++ cmake libqt5-qtbase-devel \
   libqt5-qtmultimedia-devel libqt5-qtx11extras-devel libbz2-devel \
   libopenssl-devel libupnp-devel libXss-devel sqlcipher-devel rapidjson-devel

Additional dependencies for plugins:

   sudo zypper install ffmpeg-4-libavcodec-devel libcurl-devel libxml2-devel \
   libxslt-devel speex-devel speexdsp-devel

Arch Linux

   pacman -S base-devel libgnome-keyring libmicrohttpd libupnp libxslt \
       libxss opencv qt4 speex sqlcipher

Checkout the source code

   mkdir ~/retroshare
   cd ~/retroshare 
   git clone trunk


   cd trunk
   qmake CONFIG+=debug


   sudo make install

The executables produced will be:

  • /usr/bin/RetroShare06
  • /usr/bin/RetroShare06-nogui

Compile retroshare-nogui only

If you want to run RetroShare on a server and don’t need the gui and plugins, you can run the following commands to only compile/install the nogui version:

    make retroshare-nogui
    sudo make retroshare-nogui-install_subtargets

For packagers

Packagers can use PREFIX and LIB_DIR to customize the installation paths:

    qmake PREFIX=/usr LIB_DIR=/usr/lib64 "CONFIG-=debug" "CONFIG+=release"
    make INSTALL_ROOT=${PKGDIR} install


If libsqlcipher is not available as a package

You need to place sqlcipher so that the hierarchy is:

      +--- trunk
      +--- lib
            +---- sqlcipher
    mkdir lib
    cd lib
    git clone git://
    cd sqlcipher
    ./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="-lcrypto"
    cd ..

Compile and run tests

   qmake CONFIG+=tests  

Compilation on Windows


Qt Installation

Install Qt via: Qt Download

Use default options.
Add to the PATH environment variable


Depends on which version of Qt you use.
Change build-all-mingw32make.bat with these values too if you don't use MSys2.

MSYS2 Installation

Choose your MSYS2 installer here: MSYS2

Follow the install procedure.
Don't forget to sync & Update pacman.

   pacman --needed -Sy bash pacman pacman-mirrors msys2-runtime

Restart console

   pacman -Su

Install all default programs

   pacman -S base-devel git mercurial cvs wget p7zip gcc perl ruby python2

Choose only w64-i686 if you want only compilation in 32b architecture.

   pacman -S mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain

Install other binutils:

   pacman -S mingw-w64-i686-miniupnpc mingw-w64-x86_64-miniupnpc  
   pacman -S mingw-w64-i686-sqlite3 mingw-w64-x86_64-sqlite3  
   pacman -S mingw-w64-i686-speex mingw-w64-x86_64-speex  
   pacman -S mingw-w64-i686-opencv mingw-w64-x86_64-opencv  
   pacman -S mingw-w64-i686-ffmpeg mingw-w64-x86_64-ffmpeg  
   pacman -S mingw-w64-i686-libmicrohttpd mingw-w64-x86_64-libmicrohttpd  
   pacman -S mingw-w64-i686-libxslt mingw-w64-x86_64-libxslt

Add MSYS2 to PATH environment variable depends your windows


Git Installation

Install Git Gui or other client: Git Scm

Create a new directory named:


Right-click on it and choose: Git Bash Here

Paste this text on git console:

  git clone

Last Settings

In QtCreator Option Git add its path: C:\Program Files\Git\bin and select "Pull" with "Rebase"

Open an MSys2 32|64 shell
Move to build_scripts:

   cd /c/Development/GIT/RetroShare/msys2_build_libs/

Compile missing library


You can now compile RS into Qt Creator

For using, and debugging Plugins, you can use Symlinker to link the files in



Compilation on MacOS

MacOS logo

Qt Installation

Install Qt via: Qt Download

Use default options. And add Qt Script support.

Add to the PATH environment variable by editing your ~/.profile file.

   export PATH="/users/$USER/Qt/5.14.1/clang_64/bin:$PATH"

Depends on which version of Qt you use.

Get RetroShare

In Qt Creator Projects -> New -> Import Project -> Git Clone -> Choose Add Repository and Continoue


via Terminal:

   cd <your development directory>
   git clone retroshare

via GitHub Desktop: GitHub Desktop Download

In GitHub Desktop -> Clone Repository -> URL

   Add Repository URL: and Clone

Choose if you use MacPort or HomeBrew

MacPort Installation

Install MacPort and XCode following this guide: MacPort and XCode

Start XCode to get it updated and to enable the C compiler to create executables.

Install libraries

   $ sudo port -v selfupdate
   $ sudo port install openssl
   $ sudo port install miniupnpc
   $ sudo port install libmicrohttpd

For VOIP Plugin:

   $ sudo port install speex-devel
   $ sudo port install opencv
   $ sudo port install ffmpeg

Get Your OSX SDK if missing: MacOSX-SDKs

HOMEBREW Installation

Install HomeBrew following this guide: HomeBrew

Install XCode command line developer tools:

   $xcode-select --install

Start XCode to get it updated and to able C compiler to create executables.

Install libraries

   $ brew install openssl
   $ brew install miniupnpc
   $ brew install libmicrohttpd
   $ brew install rapidjson
   $ brew install sqlcipher

If you have error in linking, run this:

   $sudo chown -R $(whoami) /usr/local/lib/pkgconfig

For VOIP Plugin:

   $ brew install speex
   $ brew install speexdsp
   $ brew install opencv
   $ brew install ffmpeg

For FeedReader Plugin:

   $ brew install libxslt

Get Your OSX SDK if missing: MacOSX-SDKs

Last Settings

In QtCreator Projects -> Manage Kits > Version Control > Git:

   select "Pull with rebase"

In QtCreator Projects -> Build -> Build Settings -> Build Environment -> Add this path:


In QtCreator Projects -> Build Settings -> Build Steps -> Add Additional arguments:

   "CONFIG+=rs_autologin" "CONFIG+=rs_use_native_dialogs"

Set your Mac OS SDK version


CONFIG += c++14 rs_macos11.1

and then retroshare.pri

macx:CONFIG *= rs_macos11.1
rs_macos10.8:CONFIG -= rs_macos11.1
rs_macos10.9:CONFIG -= rs_macos11.1
rs_macos10.10:CONFIG -= rs_macos11.1
rs_macos10.12:CONFIG -= rs_macos11.1
rs_macos10.13:CONFIG -= rs_macos11.1
rs_macos10.14:CONFIG -= rs_macos11.1
rs_macos10.15:CONFIG -= rs_macos11.1

Edit your retroshare.pri and add to macx-* section

INCLUDEPATH += "/usr/local/opt/openssl/include"
QMAKE_LIBDIR += "/usr/local/opt/openssl/lib"
QMAKE_LIBDIR += "/usr/local/opt/sqlcipher/lib"
QMAKE_LIBDIR += "/usr/local/opt/miniupnpc/lib"

alternative via Terminal

$ qmake INCLUDEPATH+="/usr/local/opt/openssl/include" QMAKE_LIBDIR+="/usr/local/opt/openssl/lib" QMAKE_LIBDIR+="/usr/local/opt/sqlcipher/lib" QMAKE_LIBDIR+="/usr/local/opt/miniupnpc/lib"

For FeedReader Plugin:

INCLUDEPATH += "/usr/local/opt/libxml2/include/libxml2"

For building RetroShare with plugins:

$ qmake \
INCLUDEPATH+="/usr/local/opt/openssl/include" QMAKE_LIBDIR+="/usr/local/opt/openssl/lib" \
QMAKE_LIBDIR+="/usr/local/opt/sqlcipher/lib" \
QMAKE_LIBDIR+="/usr/local/opt/miniupnpc/lib" \
INCLUDEPATH+="/usr/local/opt/opencv/include/opencv4" QMAKE_LIBDIR+="/usr/local/opt/opencv/lib" \
INCLUDEPATH+="/usr/local/opt/speex/include" QMAKE_LIBDIR+="/usr/local/opt/speex/lib/" \
INCLUDEPATH+="/usr/local/opt/speexdsp/include" QMAKE_LIBDIR+="/usr/local/opt/speexdsp/lib/" \
INCLUDEPATH+="/usr/local/opt/libxslt/include" QMAKE_LIBDIR+="/usr/local/opt/libxslt/lib" \
QMAKE_LIBDIR+="/usr/local/opt/ffmpeg/lib" \
LIBS+=-lopencv_videoio \
CONFIG+=retroshare_plugins \
CONFIG+=rs_autologin \
CONFIG+=rs_use_native_dialogs \
CONFIG+=release \

Compile RetroShare

You can now compile RetroShare into Qt Creator or with Terminal

   cd retroshare
   qmake; make

You can change Target and SDK in ./retroshare.pri:82 changing value of QMAKE_MACOSX_DEPLOYMENT_TARGET and QMAKE_MAC_SDK

You can find the compiled application at ./retroshare/retroshare-gui/src/

Copy Plugins

$ cp \
./plugins/FeedReader/lib/libFeedReader.dylib \
./plugins/VOIP/lib/libVOIP.dylib \
./plugins/RetroChess/lib/libRetroChess.dylib \