ユーザ用ツール

サイト用ツール


gnustep:install-from-source-fedora

文書の過去の版を表示しています。


GNUstep ソースからのインストール on Fedora 43

目標

Fedora 43 に Clang/Objective-C 2/GNUstep のGUIアプリケーションの開発環境を構築する。

前もって必要なもの

以下をあらかじめパッケージマネージャーでインストールしておきます。

  • clang
  • lld
  • libobjc2

※libobjc2 はソースからインストールしたほうが良いかもしれません。

GNUstepのソースコードの入手

GNUstep: Download から GNUstep Core にある以下のソースを入手します。

  1. GNUstep Make
  2. GNUstep Base
  3. GNUstep GUI
  4. GNUstep Backend

上から順にビルドしてインストールしていく必要があります。

GitHubのリポジトリを使う場合、以下のようにします。

$ git clone https://github.com/gnustep/tools-make.git
$ git clone https://github.com/gnustep/libs-base.git
$ git clone https://github.com/gnustep/libs-gui.git
$ git clone https://github.com/gnustep/libs-back.git

1. GNUstep Make (tools-make)

詳しい説明は INSTALL に書かれています。

GNUstep Make は GNUstep を利用するプロジェクトをビルドするための基本的なビルドツールで、ほぼ必須です。 他のライブラリ (Base、GUI、Backend) をビルドするために必要なので、まず最初にインストールする必要があります。 GCC を使うならただ configure と make を実行すればよいだけですが、Clang を利用するためには調整が必要です。 そして、最も引っかかりやすいポイントでもあります。

configureは以下のオプションを指定して実行します。

$ ./configure \
	--enable-native-objc-exceptions \
	--enable-objc-arc \
	--with-runtime-abi=gnustep-2.1 \
	--with-library-combo=ng-gnu-gnu \
	CC="clang" CXX="clang++" CPP="clang -E" LDFLAGS="-fuse-ld=lld"

~–with-runtime-abi=gnustep-x.y~ の ~x.y~ は libobjc2 のバージョンに合わせます。

素直に上記のコマンドを実行すると、たぶんエラーになります。 エラーになったら config.log を確認します。 ※エラーにならなかったらmakeに進んでください。 おそらく、clang のオプション ~-V~ と~-qversion~ をテストしているところで失敗してるのがわかります。 このオプションをサポートするclangのバージョンは存在しません。 configureスクリプトの該当箇所を探して修正します。 ~-V~ と~-qversion~ を、clangがサポートする適切なオプション ~-v~ や ~–version~ に書き換えます。 あるいは削除してしまいます。

libobjc (2ではない) が存在していると、たぶんエラーになります。 この場合 libobjc をアンインストールすることで通すことができます。 残念ながら、この回避策を取るとGCCでObjective-Cを利用できなくなってしまいます。 どのみち GNUstep を GCC と Clang 両方で使えるようにするのは難しいので、どちらかを諦めざるを得ないです。

configure が通ったら make でインストールします。

$ make # たぶん何も処理は行われないので省略可
$ sudo make install

prefixを指定しなければ /usr/local 以下にインストールされます。 アンインストールは ~make uninstall~ でできます。

~make install~ が通ったら、以下のコマンドで GNUstep Make を有効にします。

$ source /usr/local/share/GNUstep/Makefiles/GNUstep.sh

gnustep-config を実行して、正しく GNUstep Make の環境がセットアップされていることを確認しておきます。

$ gnustep-config --objc-libs
-fuse-ld=lld -pthread -fexceptions -rdynamic -fobjc-runtime=gnustep-2.1 -fblocks -L/home/username/GNUstep/Library/Libraries -L/usr/local/lib -lpthread -lobjc -lm

大まかにこのような出力にならなければどこかで失敗しています。

以降の作業は GNUstep Make が有効になっている前提で進めます。

2. GNUstep Base (libs-base)

詳しい説明は INSTALL に書かれています。

依存するライブラリは dnf でインストールできます。

$ sudo dnf install libffi-devel libicu-devel gnutls-devel libxml2-devel libxslt-devel libxslt-devel avahi-devel zlib-ng-compat-devel openssl-devel libcurl-devel libdispatch-devel

configureとmake を実行します。

$ ./configure
$ make
$ sudo make install

/usr/local/include や /usr/local/lib 以下にヘッダーとライブラリが配置されていることを確認しておきます。

この時点で一度コンソール版の Hello World を書いて動作するか確認しておくのが良いでしょう。

3. GNUstep GUI (libs-gui)

詳しい説明は INSTALL に書かれています。

依存するライブラリはdnfでインストールできます。

$ sudo dnf install libtiff-devel libjepg-devel libpng-devel giflib-devel aspell-devel cups-devel audiofile-devel portaudio-devel

configureとmakeを実行します。

$ ./configure
$ make
$ sudo make install

/usr/local/include や /usr/local/lib 以下にヘッダーとライブラリが配置されていることを確認しておきます。

4. GNUstep Backend (libs-back)

詳しい説明は INSTALL に書かれています。

configure と make を実行します。

$ ./configure
$ make -j4
$ sudo make install

GNUstep 本体のインストールはこれで完了ですが、まだやらないといけなことがあります。

フォントの問題の対応

この段階で Objective-C 2 でプログラムのコードを書いてビルドするところまではできます。 しかし、まだ実行環境としては不完全です。

フォント周りで致命的な問題があって、このままではGUIアプリケーションが動作しません。 具体的には、デフォルトのシステムフォント Helvetica が GNUstep に同梱されていないためです。 Helvetica はプロプライエタリなフォントであるため扱いにくいです。 代わりに別のフォントを使用するように設定する必要があります。 残念ながら、その手順はあまり分かりやすいものではありません。 1)

以下の手順でフォントの設定を変更します。

  1. 既存の TTF/OTF などのフォントから、GNUstep が認識する nfont を生成する
  2. .nfont フォルダを適切な場所に配置する
  3. その nfont を使用するように設定する

TTF/OTF のフォントを直接使うことはできないので nfonts という形式にまとめないといけないけません。 これは mknfonts というツールで自動化できます。 デフォルトで使用するフォントの設定は defaults というコマンドで行います。

これらを実際に行う一連のコマンドは、以下のようになります(一例です)。

$ git clone https://salsa.debian.org/gnustep-team/mknfonts.git
$ cd mknfonts
$ make                                                   # GNUstep Make が有効になっている前提
$ cd obj
$ ./mknfonts /usr/share/fonts/liberation-sans-fonts/*    # liberation-sans-fonts でなくても好みのものを選べば良い
$ mv 'Liberation Sans.nfont' LiberationSans.nfont        # 空白が入っていると扱いづらいので、リネームしておく
$ mkdir $HOME/GNUstep/Fonts                              # もし存在していなければ作成しておく
$ sudo cp -R ./LiberationSans.nfont $HOME/GNUstep/Fonts  # システム全体で共有するならば /usr/local/lib/GNUstep/Fonts に配置する
$ defaults write NSGlobalDomain NSFont "LiberationSans"  # フォント名は .nfont フォルダにある FontInfo.plist の PostScriptName に合わせる

これで、ひとまずGUIアプリケーションも実行できるようになります。

確認のためのテストプログラム

単純なパネルを表示するプログラムを書いて、実行できることを確認しておきます。

main.m:

#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>

int main (void) {
    @autoreleasepool {
        [NSApplication sharedApplication];
        NSRunAlertPanel (@"Does work fine?", @"Hello, world!", nil, nil, nil);
    }
    return 0;
}

GNUmakefile:

include $(GNUSTEP_MAKEFILES)/common.make

APP_NAME = PanelExample
PanelExample_HEADERS =
PanelExample_OBJC_FILES = main.m
PanelExample_RESOURCE_FILES =

include $(GNUSTEP_MAKEFILES)/application.make

ビルドと実行:

$ make
$ openapp ./PanelExample

実行結果:

PanelExample app screenshot

実行中に数行程度の煩わしいログが流れるかもしれません。 今の段階では無視しておくことにします。

1)
ここの説明を参考にしました。
gnustep/install-from-source-fedora.1771486179.txt.gz · 最終更新: by freemikan

特に明示されていない限り、本Wikiの内容は次のライセンスに従います: CC0 1.0 Universal
CC0 1.0 Universal Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki