User Tools

Site Tools


wiki:development:build-howto-mswin:x2goclient

This is an old revision of the document!


Build X2GoClient and 3rd-party programs for MS Windows

This howto explains how to build the MS Windows version of X2Go Client. This howto explains how to build the 32-bit version of X2Go Client on MS Windows. If someone successfully attempts a 64-bit (which should work, but needs to be tested), please contribute to this wiki page.

Overview of third-party components

X2Go Cltient for Windows needs several 3rd-party programmes for being able to run on MS Windows:

All these programmes can be built from source, downloaded from our server or from their project sites. You can also copy the 3rd-party components from X2Go Client installation (on MS Windows) directory.

Build Utilities

For building X2Go Client, we highly recommend to install MSysGit and Notepad2.

MSysGit provides a Unix-like shell (bash) environment, so that you can use Git easily from the command line.

Notepad2 is a freeware alternative to Notepad shipped with Microsoft Windows. Notepad2 understands UTF-8 text formats (and others) and can handle Unix-style line endings. In case you want to introspect a code file, this tool is very handy.

Build X2Go Client

Installing MinGW

MinGW is a gcc compiler for Windows. You need it to build X2Go Client. Qt-4.8 for Windows should be used with MinGw-4.4. Unfortunately, you can not download binaries for this version from MinGW project site any more. You can build it from source or download it from X2Go Site

Extract it to your disk (D:\mingw in this example).

Finally, you have to add these MinGW executable directories to your PATH environment variable: D:\mingw\bin, D:\mingw\libexec\gcc\mingw32\4.4.0.

Installing Qt

You need Qt to build X2Go Client from source. Qt-4.8 is tested and recommended for current version of X2Go Client.

Download and install a MinGW version of Qt-4.8 for Windows from here

In this example D:\Qt will be chosen as installation directory

Configuring Qt

Providing OpenSSL support in Qt

As X2Go Client needs a Qt with SSL support you must install OpenSSL for MS Windows. OpenSSL depends on the Microsoft Visual C++ 2008 Redistributables. Get that (32-bit version, x86) from the Microsoft site and install it prior to installing OpenSSL.

The OpenSSL installer for Windows here or from our site. Install it on your build system (for example to directory d:\OpenSSL-Win32).

After installation, copy OpenSSL header files into MinGW's include directory:

d:\OpenSSL-Win32\include\openssl -> d:\mingw\include\openssl

Static builds of Qt with SSL support

It is recommended to configure Qt to build statically linked applications. It will take some time to reconfigure Qt for static builds. You surely can skip this step, but in this case you must provide Qt libraries with your X2Go Client binary.

Open Qt Command Prompt and start configuration script

$ configure -release -static -openssl

Rebuild Qt

$ make sub-src

Dynamically linked builds of Qt with SSL support

If you choose to build dynamically linked applications with Qt, you still have to rebuild Qt in order to get OpenSSL support into Qt.

Open Qt Command Prompt and start configuration script

$ configure -release -openssl

Rebuild Qt

$ make sub-src

Installing libssh

You need libssh to build X2Go Client.

Get libssh library package built with MinGW from the KDE Windows project or from our site. Extract files from archive.

Copy headers files in “include” directory of MinGW

libssh\include\libssh → d:\mingw\include\libssh

Copy library files in “lib” directory of MinGW

libssh\lib\*.* → d:\mingw\lib\

Build X2Go Client from source

Open Qt Command Prompt, change to your build directory and get X2Go Client sources from git

$ git clone git://code.x2go.org/x2goclient.git

Build X2Go Client

$ cd x2goclient
$ PATH=%PATH%;D:\MinGW\libexec\gcc\mingw32\4.4.0\
$ config_win.bat
$ mingw32-make

X2Go Client (x2goclient.exe) binary is in d:\build\x2goclient\release directory

Pack X2Go Client

You may want to pack X2Go Client to reduce it size. You can do it with upx, which is available for Windows, Linux and Cygwin.

X2Go Client package directory

To make X2Go Client usable on Windows, you must put X2Go Client binary and all libraries and components in one directory.

This directory should consist:

  • VcXsrv
  • PulseAudio (optional)
  • nxproxy with libraries
  • Open SSH Server with libraries (optional)
  • X2Go Client with libraries

Libraries needed by X2Go Client

MinGW libraries ( you can get them from D:\MinGW\bin )

  • libgcc_s_dw2-1.dll
  • mingwm10.dll

OpenSSL library - libeay32.dll. You can get it in your OpenSSL installation directory

libssh library - libssh.dll. You can get it from libssh binary package, which is available on the KDE Windows project site or on our site

libzip library - libzip.dll. You can get it from libzip binary package, which is available on the KDE Windows project site or on our site

zlib library - libz.dll. You can get it from zlib binary package, which is available on the KDE Windows project site or on our site

If you want to use X2Go Client on older versions of Windows, you can put the “Microsoft Visual C\+\+ Redistributable Package” dll files to your X2Go Client package directory.

Take a look in to the installation directory created by official X2Go Client installer to find how package directory should look like.

nxproxy

you can download nxproxy, and it libraries here

If you want build nxproxy from source, you need install and configure Cygwin first.

Installing Cygwin

Download and startCygwin installer

Choose your cygwin directory. For example c:\cygwin. Follow installer instructions.

on installer page “Select Packages” you can select programs and libraries that should be installed in your cygwin environment. For building of nxproxy you will need:

  • autoconf
  • automake
  • gcc4
  • gcc4-g++
  • git
  • libX11-devel
  • libjpeg-devel
  • libmpfr4
  • make
  • mc
  • zlib-devel
  • wget

Installing libpng

You will need a libpng12 to build nxproxy. This version of libpng is not available on current version of cygwin. You should install it manually.

Open a cygwin shell. Go to the src directory

$cd /usr/src

get a libpng12 from project site

$wget http://downloads.sourceforge.net/project/libpng/libpng12/1.2.50/libpng-1.2.50.tar.gz
$tar -xzvf libpng-1.2.50.tar.gz
$cd libpng-1.2.50

build and install libpng

$./configure --prefix=/usr/
$make && make install

Building nxproxy

open a cygwin shell and change to your build directory. In this example d:\Build will be used

$cd /cygdrive/d/Build

get a nx-libs sources

$git clone git://code.x2go.org/nx-libs.git
$cd nx-libs

build nxcomp

$cd nxcomp
$autoconf
$./configure
$make
$cd ..

build nxproxy

$cd nxproxy
$autoconf
$./configure
$make
$strip nxproxy.exe
$cd ..

nxproxy binary (nxproxy.exe) is ready. Now you can copy it in to the installation directory of x2goclient. To be able to run nxproxy you should also copy needed libraries in this directory:

from nxcomp directory (d:\Build\nx-libs\nxcomp) - cygXcomp.dll

from cygwin directory (c:\cygwin\bin):

  • cyggcc_s-1.dll
  • cygjpeg-8.dll
  • cygpng-3.dll
  • cygstdc++-6.dll
  • cygwin1.dll
  • cygz.dll

Open SSH Server

X2Go Client for Windows using modified Cygwin Open SSH Server for file sharing. You can download it here

If you want to build it from source, you should install Cygwin first.

After that run Cygwin installer (setup.exe), navigate to “Select Packages” page and install additional packages, you need to build Open SSH Server:

  • libedit
  • libedit-devel
  • libkrb5-devel
  • libncurses-devel
  • openssl-devel
  • libwrap-devel
  • patch

For openssh you should install both, binary and source packages (toggle “Src” checkbox beside of package name). Source package will be installed in /usr/src directory in your Cygwin installation.

Copy openssh tarball to your build directory. In this example d:\Build will be used

$cp /usr/src/openssh-6.1p1.tar.gz /cygdrive/d/Build/

Extract sources and change to openssh source directory

$cd /cygdrive/d/Build/
$tar -xzvf openssh-6.1p1.tar.gz
$cd openssh-6.1p1

Get and apply patch, which allow use Open SSH Server with X2Go Client

$wget http://code.x2go.org/releases/source/openssh-cygwin/openssh-6.0p1-2.x2go.patch
$patch.exe < openssh-6.0p1-2.x2go.patch

Build Open SSH Server

$./configure --libexecdir=/usr/sbin --with-kerberos5=/usr --with-tcp-wrappers --with-libedit --with-xauth=/usr/bin/xauth --build=mingw32
$make
$strip *.exe

Open SSH Server binaries are ready. Now you can copy them in to the installation directory of x2goclient:

  • sftp.exe
  • sftp-server.exe
  • ssh-keygen.exe
  • sshd.exe

To be able to run Open SSH Server you should also copy needed programs and libraries from cygwin directory (c:\cygwin\bin):

  • sh.exe
  • cygasn1-8.dll
  • cygcom_err-2.dll
  • cygcrypt-0.dll
  • cygcrypto-1.0.0.dll
  • cygedit-0.dll
  • cyggcc_s-1.dll
  • cyggssapi-3.dll
  • cygheimbase-1.dll
  • cygheimntlm-0.dll
  • cyghx509-5.dll
  • cygiconv-2.dll
  • cygintl-8.dll
  • cygkafs-0.dll
  • cygkrb5-26.dll
  • cygncursesw-10.dll
  • cygreadline7.dll
  • cygroken-18.dll
  • cygsqlite3-0.dll
  • cygssp-0.dll
  • cygwin1.dll
  • cygwind-0.dll
  • cygwrap-0.dll
  • cygz.dll

Some of this libraries are also used by nxproxy. Open SSH Server and nxproxy should be built using same version of Cygwin.

PulseAudio

you can download PulseAudio for Windows here or from project site. Building PulseAudio from source is not the part of this Howto

VcXsrv

you can download VcXsrv for Windows here or from project site. Building VcXsrv from source is not the part of this Howto

wiki/development/build-howto-mswin/x2goclient.1379677575.txt.gz · Last modified: 2013/09/20 11:46 by sunweaver