一部の C 言語の関数を呼び出すには、 その関数を含む特定の OS レベルのライブラリーとリンクする必要があります。 たとえば、sin
関数では、 コマンドライン・スイッチ -lm
を使用して特別なライブラリーをリンクする必要があります。 C 言語インターフェイスでは、
以下のように add-lib
を呼び出して同等のことを行います:
clear-libs s" m" add-lib \c #include <math.h> c-function sin sin r -- r
まず、 (あなたが sin
に必要としない、)以前に宣言された可能性のあるライブラリーをすべてクリアします。 次に m
ライブラリー(実際には libm.so
など) を現在宣言されているライブラリーに追加します。 これは必要なだけ追加できます。 最後に、
上に示したように関数を宣言します。 通常は、 多くの関数宣言に同じライブラリー宣言のセットを使用します。 あなたは、 最初に、 この組を、 ただ 1
つだけ作成する必要があります。
注意: c-library...end-c-library
内で clear-libs
を呼び出してはいけないことに注意してください。 しかしながら、 c-library
は clear-libs
の機能も実行するため、 clear-libs
は必要なく、 そして、 あなたは、 通常は add-lib
呼び出しを
c-library...end-c-library
内に置きたいと思うでしょう。
clear-libs
( – ) gforth-0.7 “clear-libs”
libs のリストをクリア
add-lib
( c-addr u – ) gforth-0.7 “add-lib”
ライブラリー libstring をライブラリーのリストに追加します。ここで、 string は c-addr u で表されます。
add-libpath
( c-addr u – ) gforth-0.7 “add-libpath”
パス string をライブラリー検索パスのリストに追加します。 ここで、string は c-addr u で表されます。
add-framework
( c-addr u – ) gforth-1.0 “add-framework”
フレームワーク libstring をフレームワークのリストに追加します。 ここで、string は c-addr u で表されます。
add-incdir
( c-addr u – ) gforth-1.0 “add-incdir”
パス c-addr u をインクルード検索パスのリストに追加します
add-cflags
( c-addr u – ) gforth-1.0 “add-cflags”
あらゆる種類の cflags をC言語コンパイラーに追加します
add-ldflags
( c-addr u – ) gforth-1.0 “add-ldflags”
リンカー(linker)にフラグを追加