FlagShip
Tech Info  

 

Ubuntu 8 to 16 & LTS

tested with   version :   8.04.1   9.04 (i386 and amd64)   10.10 (64bit)   11.10 (x86_64)   14.04 LTS (32 & 64bit)   16.04 LTS 64bit     check: CD or DVD label
  kernel :   2.6.24 2.6.28 2.6.35-25 3.0.0-14 3.13.0-40 4.4.0-21   check: uname -a
  gcc : 4.2.3 4.3.3 4.4.5 4.6.1 4.8.2 5.3.1   check: cc -v
  glibc : 2.7 2.9 2.12.1 2.13 2.19 2.32   check: /lib/i386-linux-gnu/libc.so.6 or /lib/libc.so.6 or /lib32/libc.so.6
  X11 : Xorg 1.4.0.90  Xorg 1.6.8 Xorg 1.9.0 Xorg 1.10.4    Xorg 1.15.1    Xorg 1.18.3      check: Xorg -version

Ubuntu home page: http://www.ubuntu.com

Ubuntu Linux Installation Hints:

  • Packages: in addition to default suggestions and your choices,
    • choose "Desktop" or "Server" for the installation type
    • VFS6 only: when the default installation finishes, install package "libstdc++5" via System → Administration → Synaptic Package Manager, otherwise VFS would report at linking stage "/usr/bin/ld: warning: libstdc++.so.5, needed by /usr/local/FlagShip6/lib/libFlagShip6.so, not found"
    • for running executables in Terminal i/o mode using "newfswin" script, you will also need to install the "tcsh" package
    • to be able to create statically linked executables, install packages "libxext-dev", "libsm-dev", "libstdc++6-4.*-dev" and "libjpeg62-dev"
    • For 64-bit Ubuntu distribution (see also below), you will additionally need standard packages "ia32-libs", "gcc-4.x-multilib" and "g++-4.x-multilib" (where 4.x corresponds to your installed gcc, e.g. 4.3). For VFS6, install also the "lib32stdc++5" package, e.g. from https://launchpad.net/ubuntu/warty/amd64/lib32stdc++5/
    • 32bit libraries are located in /lib/lib32/*
    • See also this 64bit info for further requirements.
  • 32bit Ubuntu in short:
    • All packages for running your executables on customer's system are installed automatically by Ubuntu default installation.
    • For development, open terminal/konsole and invoke "sudo apt-get install tcsh xterm gcc g++ libjpeg62-dev xorg-dev" to install all required packages for dynamic and static linking.
  • Ubuntu16.04 LTS 64bit:
    • Download the script ubuntu16libs.sh and execute:
      sudo -i script /var/log/ubuntu16libs.log
      sh /myPath/ubuntu16libs.sh     # where myPath is your download path, e.g. /home/myName/Downloads
      exit     # exit the superuser mode
  • Other 64bit Ubuntu in short:
    • For running your executables on customer's system, you/he needs to install 32bit run-time Linux libraries, since Ubuntu installs by default only 64bit libs. Invoke "sudo apt-get install tcsh xterm ia32-libs", or "sudo apt-get install tcsh xterm lib32z1 lib32ncurses5 lib32bz2-1.0" with Ubuntu 14 and newer.
    • For development, open terminal/konsole and invoke "sudo apt-get install tcsh gcc gcc-multilib g++ g++-multilib ia32-libs libjpeg62-dev:i386 xorg-dev" to install all required packages for dynamic and static linking.
    • With Ubuntu 14 and newer, invoke instead "sudo apt-get install tcsh xterm gcc gcc-multilib g++ g++-multilib libjpeg62-dev:i386 xorg-dev lib32z1 lib32ncurses5 lib32bz2-1.0" since ia32-libs is n/a anymore. Sometimes is "sudo apt-get install tcsh xterm gcc gcc-multilib g++ g++-multilib libfontconfig1:i386 libx11-6:i386 libxrender1:i386 libxext6:i386 libgl1-mesa-glx:i386 libglu1-mesa:i386 libglib2.0-0:i386 libsm6:i386 libXft2:i386" required instead.
    • Check for missing symbolic links to *.so in /usr/lib/i386-linux-gnu, for example:
      "cd /usr/lib/i386-linux-gnu; ls -la lib{X,ICE,SM,font}*.so*" and if the corresponding *.so is not available, create symbolic link, e.g. "sudo ln -s libX11.so.6 libX11.so" or "sudo ln -s libXft.so.2 libXft.so" etc, otherwise the linker may report missing libs.
    • See also this 64bit info for further information.

Installation of Visual FlagShip 7.1.* (VFS7):

  • Install the tar (non-rpm) based package FlagShip-7*.tgz, see the booklet for details and step-by-step instruction
  • The main FlagShip directory is /usr/local/FlagShip7
  • Ubuntu supply all required static libraries in packages suggested above, so you may compile both dynamically (default) and statically (using the -stat compiler switch). If you get get some warnings at the end of FlagShip installation, or linker errors at static linking, post-install the required packages noted above from the Ubuntu distribution.

Using FlagShip:

  • In VFS7, read the short step-by-step instruction for using FlagShip in the booklet (available also in the main /usr/local/FlagShip7 directory)
  • If in X/GUI environment (KDE, Gnome etc): open console/terminal window.
  • To test and run supplied examples, invoke  cd /usr/local/FlagShip6/examples ; make
    If the default link /bin/sh → /bin/dash causes difficulties, invoke "cd /bin ; sudo rm sh ; sudo ln -s bash sh"
  • Compile your sources as described in fsman section FSC, e.g. "FlagShip myapp*.prg", a short help is available via "FlagShip -h". Note the case sensitive names in Unix/Linux.
  • Watch for displayed compiler and linker errors, and fix if any.
  • If everything is ok, execute (see fsman section FSC):
    ./a.out            # in GUI mode
    ./a.out -io=t      # in Textual i/o mode, preferably with "Terminal → Character Encoding → Western (IBM850)"
    newfswin ./a.out   # alternative for Textual i/o mode in X11 environment
  • You may use the FlagShip's distribute.sh script to customize all redistributable files with your application.
  • In some Ubuntu packages, you may need to disable line 416 (#xrdb -merge ...) and enable line 419 (source $FlagShipDir/bin/$xmapFile) in /usr/local/FlagShip6/bin/newfswin to proper support Terminal i/o in X11 environment.
  • The on-line manual is available by entering "fsman &" in KDE/Gnome console for GUI mode, or "newfswin fsman" for textual mode. Manual in pdf format is available in /usr/local/FlagShip[6,7]/manual or in Web. Printed manual is available upon request.
  • Step-by-step instruction for converting available applications to GUI is given in fsman section LNG.9.6
  • Examples are available in /usr/local/FlagShip[6,7]/examples and .../tools directory. Best to copy them to your working directory.
  • On problems or questions, please check the on-line manual and FAQ first. If your problem persist, contact FlagShip support - we grant free tech support not only for the licensed, but also for the Test/Eval version.

Known Issues :

  • If the PC-8 semi-graphic characters are displayed in textual mode as Ä's (A-umlaut) etc, you may either
    - start the application via newfswin, newfscons or newfsterm (see above and Release Notes in fsman) which automatically sets the proper environment, or
    - disable Unicode i.e. set the environment variable "LANG=en_EN", and start the application via newfswin
     
    See also and/or test with /usr/local/FlagShip6/examples/boxcommand.prg
     
  • If the last character in the manual pages seems to be missing in GUI mode, select Courier[adobe] via Menu→Options→Font→Input/Output or assign other font via command-line parameter, see fsman -h for furtehr details.
     
  • In some Ubuntu versions you may receive following messages after installing FlagShip (and applying above sudo apt-get ...):
    a) NOTE: could not locate static C library named 'libc.a' ...
    b) NOTE: could not locate static jpeg library named 'libjpeg.a' ...
    c) NOTE: could not locate static X11 library named 'libX11.a' ...
    where a) and b) are harmless, these libs are usually located on Ubuntu in the /usr/lib/i386-linux-gnu directory, and also the libX11.a for c) is in Ubuntu often located in the same directory, except for some 64bit distributions. To resolve unresolved externals when compiling statically with the "-stat" switch, edit the /usr/local/FlagShip7/etc/FS7config file to read (here in extract):

    MACRO1 :-L$(FSDIR)/lib -L/usr/lib32 -L/usr/lib/i386-linux-gnu -L/lib -L/usr/lib -L/usr/X11/lib -L/usr/X11R6/lib -L/usr/local/lib
    MACRO3 :-lm -lXext -lX11 -lXft -lSM -lICE -ljpeg -lstdc++
     
  • In some 64-bit Ubuntu (like 12.04 LTS), there are missing links in /usr/lib/i386-linux-gnu required for static link with the "-stat" switch. If you get linker message like "/usr/bin/ld: cannot find -lX11 | -lXext | -lXft | -lICE | -lSM" etc, you will need to add missing links for these libs:
    cd /usr/lib/i386-linux-gnu
    sudo ln -s libX11.so.6 libX11.so ; sudo ln -s libXext.so.6 libXext.so ; sudo ln -s libXft.so.2 libXext.so etc.

  • When compiling large sources, you may get compiler error "** Warning: C compiler not invoked" but without any displayed syntax error. This is caused by insufficient stack size (stack overflow in yacc/lex parser) for large source files or many continuation statements (check the displayed source code line). You may increase the stack by e.g. "uname -s 30000". If you get here a message "ulimit: stack size: cannot modify limit..." you need to set (as su/root/sudo) "uname -Hs 30000", then re-open the user terminal, and set "uname -s 30000" anew. You may add this also in your ~/.bashrc script for an automatic set at login.

Additional Info:

Since FlagShip translates the Xbase code to C code as an intermediate step and requires object compatible libs during the linking stage, C compilers, utilities and libraries must be chosen with great care, otherwise upredictable errors may occur.

The C compiler (and the optional static libs) is required only in the developing phase, it is not required for the user of your application, which only needs the by FlagShip produced executable (i.e. your own application executables, see also fsman section SYS.1.2 for distribution hints).


Use the BACK button in the header of your browser to return to previous page,
or go to FlagShip home page or to general Linux info.

Last updated: 11-May-2016