Compiling FB on Linux
 

在Linux上构建FB是非常简单的,因为通常GNU / Linux发行版提供了所有必需的开发包,并且可以轻松安装,至少对于本机构建。由于64位支持被添加到FB,因此无论您是否具有32位x86或64位x86_64系统,本机构建应始终是可能的。在64位x86_64系统(或反之亦然)上交叉编译FB的32位x86版本,并为其他体系结构(如ARM)进行交叉编译也是可能的。

一般来说,编译FB-linux需要以下软件包:

  • 一个现有的FreeBASIC工具,用于引导新的编译器
  • GCC
  • 使
  • ncurses开发标头和库(实际上只是其libtinfo部分)
  • gpm开发标头和库(通用鼠标)
  • X11开发头文件和库(包括X11,Xext,XPM,XRandR,XRENDER)fy
  • OpenGL开发标头和库(通常来自于Mesa项目)
  • libffi开发头文件库

Native build

获取FB源代码

要编译新版本的FB,您首先需要获取FB源代码.以下假设您有一个名为fbc的目录,其中包含最新的FB源代码。

获取现有的FB-linux安装程序进行自举

我们需要一个有用的FB-linux安装来引导新的FB编译器。如果您尚未安装本机版本的FB,请从FB的下载网站下载最新的FreeBASIC-X.XX.X-linux版本(32bit x86,64bit x86_64,ARM等),然后解压并安装它:

$ tar xf FreeBASIC-X.XX.X-linux.tar.gz
$ cd FreeBASIC-X.XX.X-linux
$ sudo ./install.sh -i

除了fbc项目之外,您可以从其他来源获取工作的FB设置。例如,一些发行版可以开箱即可提供freebasic包。

安装开发包

以下列表显示了您必须为一些常见的GNU / Linux发行版安装的软件包。根据您使用的哪个发行版(或哪个版本),确切的包名称可能会有所不同。

基于Debian的系统(包括Ubuntu,Mint等):
  • gcc
  • make
  • libncurses5-dev
  • libgpm-dev
  • libx11-dev
  • libxext-dev
  • libxpm-dev
  • libxrandr-dev
  • libxrender-dev
  • libgl1-mesa-dev
  • libffi-dev

OpenSUSE:
  • gcc
  • make
  • ncurses-devel
  • gpm-devel
  • libX11-devel
  • libXext-devel
  • libXpm-devel
  • libXrandr-devel
  • libXrender-devel
  • Mesa-libGL-devel
  • libffi48-devel

Fedora的:
  • gcc
  • make
  • ncurses-devel
  • gpm-devel
  • libX11-devel
  • libXext-devel
  • libXpm-devel
  • libXrandr-devel
  • libXrender-devel
  • mesa-libGL-devel
  • libffi-devel

编译FB

编译FB本身就像在fbc源代码目录中运行“make”一样简单。这将构建与系统架构相匹配的本地FB设置,假设系统上安装的现有fbc生成本机程序。

$ cd fbc
$ make

这应该已经生成了bin/fbc编译器和库lib\freebasic\linux-[architecture]\.

之后,您可以通过运行“make install”将新的fbc build安装到/usr/local,并覆盖旧的FB安装:

$ sudo make install

使用现有的32位FB 在64位系统上编译32位FB

除了本地构建,您还可以使用非本机构建,例如使用现有的32位FB构建来引导,在64位系统上编译32位版本的FB。这是64位支持添加到FB之前非常常见的。它需要与原始构建略有不同的过程。

  • 获取FB源代码。
  • 安装32位版本的FB进行自举(而不是本机64位版本)。
  • 安装32位开发包(不只是本地64位开发包)。
64位Debian / Ubuntu示例:
      • gcc-multilib
      • make
      • lib32ncurses5-dev
      • libx11-dev:i386
      • libxext-dev:i386
      • libxpm-dev:i386
      • libxrandr-dev:i386
      • libxrender-dev:i386
      • libgl1-mesa-dev
      • libgpm-dev
      • lib32ffi-dev
64位OpenSUSE示例:
      • gcc-32bit
      • make
      • ncurses-devel-32bit
      • gpm-devel
      • libX11-devel-32bit
      • libXext-devel-32bit
      • libXpm-devel-32bit
      • libXrandr-devel-32bit
      • libXrender-devel-32bit
      • Mesa-libGL-devel-32bit
      • libffi48-devel-32bit
  • 将以下config.mk文件添加到fbc源代码树(FB makefile旁边):
CC = gcc -m32
TARGET_ARCH = x86
这告诉FB makefile构建32位而不是64位默认值。

将CC设置为gcc -m32而不是gcc将导致所有C代码被编译为32位而不是默认的64位。

假设现有安装的fbc是32位的,它将已经默认编译为32位,因此不需要将FBC设置为fbc -arch 32而不是fbc(而较旧的32位版本的fbc版本甚至没有{989796077 }选项)。

将TARGET_ARCH设置为x86是必要的,以覆盖FB makefile的uname -m检查(因为它在64位上返回x86_64)。这允许FB makefile选择正确的x86 rtlib / gfxlib2模块,并为x86使用正确的目录布局。
  • 运行“make”并让它编译FB:
$ cd ~/fbc
$ make
  • 或者,将新建的32位FB设置安装到/usr/local中:
$ sudo make install