LINEスタンプ制作代行サービス・LINEスタンプの作り方!

お電話でのお問い合わせ:03-6869-8600

stampfactory大百科事典

フリースタンディング環境

フリースタンディング環境(— かんきょう, freestanding environment)はC言語およびC++の実行環境の一種である。対義語はホスト環境 (hosted environment) 。ISO のC言語の仕様で規定されている。フリースタンディング環境ではmain関数でなくてよい。ホスト環境では、標準Cライブラリが対応している。フリースタンディング環境では対応すべきライブラリが少なくてよく、標準Cライブラリの大半を用意しなくてよい。そのため、可変引数であるmain, printfなどがなくてもよく、C言語としてもOSとしても小規模なものを構築できる。フリースタンディング環境をオペレーティングシステム上で動作させる場合は、オペレーティングシステムの機能を呼び出してもよい。実行環境を指定しない場合は、ホスト環境を対象にしていることがある。組み込みシステムではフリースタンディング環境を対象にすることもある。μITRONはオペレーティングシステムの一種であるが、フリースタンディング環境を選択しているシステムとして提供していることがある。TOPPERSプロジェクトのTRON系、OSEK系などで、模擬環境でないものは、フリースタンディング環境での利用を想定してソースコードを提供している。フリースタンディング環境では言語仕様に以下の制限を受ける。この Hello world は GCC と Linux の組み合わせで動作する。gcc -ffreestanding -nostartfiles -static -o freestanding freestanding.c でコンパイルする。exit は各種終了処理を行う stdlib.h の関数のためフリースタンディング環境では使えないが、_exit は unistd.h で定義されたシステムコールを呼び出すだけの POSIX の関数のため GCC の Linux 用フリースタンディング環境でも使える。類似概念として、コンパイラによっては標準Cライブラリなしでコンパイルすることも可能。例えば GCC の場合、-nostdlib を指定することにより、標準Cライブラリを使わなくなる。さらに制限は厳しくなる。フリースタンディング環境同様、終了処理すら行わないため、コンパイル結果を Linux で動作させる場合、エントリーポイントの最後などで OS のシステムコールの exit を呼び出してプロセスを殺す必要があり、フリースタンディング環境の場合は、GCC と Linux の組み合わせの場合、_exit(0) で終了させられるが、標準Cライブラリがないため、そのコードは OS と CPU 種別依存のアセンブラで書かないといけない。スタックに関しては、Linux の場合、execve システムコールがスタックを準備するため、スタックは正しく準備された状態でエントリーポイントが呼び出される。この標準Cライブラリ未使用の Hello world は GCC, Linux, x86-64 の組み合わせで動作する。gcc -nostdlib -fno-builtin -static -o nostdlib nostdlib.c でコンパイルする。

出典:wikipedia

LINEスタンプ制作に興味がある場合は、
下記よりスタンプファクトリーのホームページをご覧ください。