OSカーネル(C言語で作成)をPCに初めて実装する(コンパイル&実行?)にはどのようにするのですか? OS搭載前のPCにはコンパイラなどのようなツールは無いと思うのですが... もしかしてDOSを使うんですか? 
誰か知っている方教えて下さい。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

quenistaさんが既に書いている通りですね。



場合によっては、開発マシン上にエミュレータがあって、
それである程度デバッグできる場合もあります。

VxWorksもそうですね。


あとは、ケースによりますが、quenistaさんが書いているとおり、ROM化まで開発マシン上で行いROMをターゲットに持っていく場合、
開発マシンに最低限の機能を持ったROMを入れて、実行するプログラムを開発マシンからシリアルなり,イーサネットなり経由でダウンロードしてする場合があります。


って、もともと組み込み機器の場合でなく,
PCの場合が知りたいのかな(^^;;

まあ同じことで,マシンが同じでもOSは別な物を使ってクロス開発になります。

たとえば、MS-DOSでもWindowsでもLinuxでもいいですが、クロスコンパイラ作って実行ファイルを作り,
それを実行させるだけです。
    • good
    • 0

>もしかしてDOSを使うんですか?


DOSも立派なOSですね。(^_^)

普通、ターゲット等のOSを開発する場合は、クロスコンパイラと呼ばれる物を等を使って行います。
要は、別の物で開発して、実行形式の物をターゲットに流し込んでますよ。

これは、組み込み機器も同様です。
例えば、携帯電話やワープロ専用機等(他にも山程有ります。)は内部にOSを持っていますが、これらの上でその機器用のソフトを開発する事は無いです。
別のPC等で開発した結果をROM化等を行い、そのハードウェアに搭載しているだけです。
    • good
    • 0
この回答へのお礼

成程、そういえばVxWorks開発環境であるTornadoも確かクロスコンパイラでしたっけ? 疑問が徐々に解けつつ有りますどうも有り難う御座いました。
 

お礼日時:2002/01/13 01:07

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QGentoo FreeBSDの入れ方

FreeBSDカーネルでGentooを入れようとしているんですが、詳しい人お願いします。

Aベストアンサー

公式Wikiに記載があります。
https://wiki.gentoo.org/wiki/Gentoo_FreeBSD#Installation

QMS-VisualC++:コンパイル後実行をするとDOS窓が一瞬だけ現れて消えるのをずっと表示させたいのですが。

cout << t << endl;

return 0;

}

単に変数を画面に表示させるだけのプログラムなのですが、Build後、実行すると一瞬DOS窓が立ち上がり表示された後すぐ消えてしまいます。この表示したDOS窓を持続させたいときはどうすればいいのでしょうか。おそらくものすごく基本的なことなのでしょうが、Linux上でしかC++をしてないのでわかりません。

Aベストアンサー

!マークのボタンを押して実行したら、

Press Any Key

って出てきて止まりませんでしたっけ?

Qカーネル内でのlogの計算

カーネル内でlogの計算(底は10)をするにはどうすればよいでしょうか?
OSはFreeBSD6.2です。
よろしくお願いします。

Aベストアンサー

カーネルはほとんどC言語で書かれていますが、ライブラリ関数であるlog()はカーネル内部からは使用出来ません。
カーネル内にlogの計算をする関数があるかどうかは知りませんが、ない場合ライブラリのソースはあるのですから、そこからlog()の部分を流用すればいいのでは。

Q分割コンパイル時に構造体....

レベルの低い質問とは思いますが

struct st
{
int a;
int b;
};
void a(struct st *ST)
{
ST->a=1;
ST->b=1;
}
void main()
{
struct st ST;
a(&ST);
printf("%d%d",ST.a,ST.b);
getch();
}
これだと問題なく動作するのですが、ソースファイルを分割して
ソース1
void a(struct st *ST);
struct st
{
int a;
int b;
};
void main()
{
struct st ST;
a(&ST);
printf("%d%d",ST.a,ST.b);
getch();
}
ソース2
void a(struct st *ST)
{
ST->a=1;
ST->b=1;
}
だとエラーが返ってくるのがなぜなのか解りません
ソース2でも同じ構造体の宣言をしなければならないのでしょうか。
長くなり読みにくくなってしまいましたが、よろしくお願いします。

レベルの低い質問とは思いますが

struct st
{
int a;
int b;
};
void a(struct st *ST)
{
ST->a=1;
ST->b=1;
}
void main()
{
struct st ST;
a(&ST);
printf("%d%d",ST.a,ST.b);
getch();
}
これだと問題なく動作するのですが、ソースファイルを分割して
ソース1
void a(struct st *ST);
struct st
{
int a;
int b;
};
void main()
{
struct st ST;
a(&ST);
printf("%d%d",ST.a,ST.b);
getch();
}
ソース2
void a(struct st *ST)
{
ST->a=1;
ST->b=1;
}
...続きを読む

Aベストアンサー

> ソース2でも同じ構造体の宣言をしなければならないのでしょうか。

そうですね。ソース2でこのままだと構造体がどんなものなのが、コンパイラには分からないんです。

こういう場合は構造体の宣言部分、すなわち、
struct st
{
int a;
int b;
};
の部分を別のファイルにします。(こういうのをヘッダファイルと言います。)
で、そのヘッダファイルの名前を例えば st.h とすると
ソース1とソース2の先頭に
#include "st.h"
と追加すれば解決します。

QCDドライブの無いノートPCにFreeBSDをクリーンインストール

FDドライブもCDドライブも付いていないノートPC(HDD容量40G)に、
Win98(C:6G、D:20G)とFreeBSD4.10R(12G)という状態でデュアルブート環境を構築しています。
このPCのFreeBSD領域にFreeBSD6.1をクリーンインストールしたいのですが、
光学ドライブが無いので単独起動ができないので困っています。

http://kurenai.wakaba.toyonaka.osaka.jp/~oe3/libretto/freebsd.html
このページを参考にすると(FreeBSD4.10Rはこの手順でインストールした)、
BSDBOOT(http://www.nurs.or.jp/~kurati/bsd/)なるものがあるのですが、
4.5-RELEASE以降はmfsrootがインストール用のカーネルに含まれていないので使用できないらしく、
お手上げ状態です。

何か方法はないでしょうか?

Aベストアンサー

HDDを他のPCにつなげてINSTALL、ノートPCにHDDをつなげて起動することでなんとかなることがあります。

QBCC32のコンパイルでDOSアプリ

bcc32 test
これでコンパイルしてできた実行ファイルはWin32でした。
クイックビューアで見た時にDOS EXECUTABLEと表示される
ようにコンパイルするにはどうしたらいいんですか?
下記がtest.cppのソースです。
#include <iostream.h>
int main(){
printf("hello");
return 0;
}

Aベストアンサー

BCC32という名前の通り32ビット専用のコンパイラのため、16ビットの
DOS用コードは生成できないようです。

こちらの、[うまくコンパイルすることができません] のところの下の方を
ご覧ください。「DOS用,PC-9801,PC/ATなど...」のところに
「Win32アーキテクチャ上のプログラムを作るコンパイラ」と書かれています。
http://www.neco.nu/gohodoji/bccfaq/bccfaq.html#compileerror

Win32コンソールアプリケーションではまずいのでしょうか。
それなら、こちらの16ビット(MS-DOS)専用のコンパラはいかがでしょうか。
http://www.lsi-j.ab.psiweb.com/freesoft/index.html

参考URL:http://www.lsi-j.ab.psiweb.com/freesoft/index.html

QFreeBSDの疑問点について

FreeBSDに関しての質問です。(Fedora Coreからの乗換え)
(1)多言語対応インストーラ
http://www.jp.freebsd.org/BootAsia/index-jp.html
には4.6.2-RELEASEまでしかないのですが、4.10のインストールする場合はどうすれば良いのでしょうか?
(2)日本語パッケージ
/stand/sysinstallによりパッケージをインストールする場合にCDにjapaneseのカテゴリが見つからないのですが、
CD(FTPによりダウンロード)には含まれていないものなのでしょうか?
また、CDに関してですがDisc2は使わなかったのですがこれは何のために必要なのでしょうか?
(3)tamagoでの日本語入力
emacsでCrtl+\でtamagoを起動し、日本語入力をしますがその際にFreeWnnサーバ(jserver)を立ち上げていないとエラーが出ます。これは、tamagoはFreeWnn専用の入力メソッドなのでしょうか?
これは、cannaへの変更が可能なのでしょうか?
(4)ランレベルについて
Linuxではランレベルという仕組みがあったのですが、FreeBSDにはそれらしきものが見当たらないのですがこの概念自体がないのでしょうか?
(5)カーネル再構築について
Linuxでは、ビデオカードのモジュール、サウンドなどの細かい設定があったと思うのですが、BSDでは普通はGENELICの設定項目だけ変更してカーネル再構築するものなのでしょうか?(LINTまで変更するもの??)
(6)インストールされているパッケージを最新に保つ方法
Fedora Coreのyum -y updateコマンドのように自動でインストールされているアプリケーションをアップデートしたいのですが、
cvsup -g /etc/ports-supfile
[portsの更新]
portupgrade -ay
[パッケージの更新]
これらをcronに登録と言う手順でよろしいのでしょうか?画面を見ているとsambaとか全然関係のなさそうなパッケージを入れているような気が(^^;

質問が多くなってしまいましたが、よろしくお願い致します。

FreeBSDに関しての質問です。(Fedora Coreからの乗換え)
(1)多言語対応インストーラ
http://www.jp.freebsd.org/BootAsia/index-jp.html
には4.6.2-RELEASEまでしかないのですが、4.10のインストールする場合はどうすれば良いのでしょうか?
(2)日本語パッケージ
/stand/sysinstallによりパッケージをインストールする場合にCDにjapaneseのカテゴリが見つからないのですが、
CD(FTPによりダウンロード)には含まれていないものなのでしょうか?
また、CDに関してですがDisc2は使わなかったのです...続きを読む

Aベストアンサー

FreeBSD Mall のセットそのものはどうやっても 4,000円くらいになりますね. 直接購入しても $39.95 ですし, subscription (定期購読) でも $24.95 ですから (しかも送料がかかる).

さしあたり使ってみたいというだけなら雑誌の付録として付いてくる DVD-ROM を探してもいいんじゃないでしょうか. それで, 本格的に使っていこうというのであれば一種の「お布施」という感覚で FreeBSD Mall のセットを入手するなり subscription で入手するなりすればいいと思います.

QWinAPIに用いるコンパイラコンパイラ

私はウィンドウズのアプリケーションを作るのに、Visual StudioのC++を用いてます。これに簡単なスクリプトファイルを加えてグラフィックを作成しようと考えていますが、そのスクリプトを解析するのにコンパイラコンパイラを勉強を兼ねて使用しようと思いました。

コンパイラコンパイラには沢山種類があるかと思われます。私が思いつくのは、boostや、yacc/lexです。

この環境でコンパイラコンパイラをソースとして加えるのなら皆さんなら何を用いますか。出来れば理由も加えて教えてください。ちなみに、コンパイラコンパイラを勉強したいので、簡単にできる文字を取り組んで比較と言った事以外でお願いします。

Aベストアンサー

ライセンスを気にしないなら flex/bison が普通?
あるいは antlr?

Qカーネル再構築の時に、CPコマンドが使えない

こんにちは。よろしくお願いいたします。
はじめて、FreeBSD(5.2.1-RELEASE)をインストールして、カーネルの再構築をしようと、
$ cd /uer/src/sys/i386/conf
$ cp /GENERIC MYKERN
として、
内容をコピーしようとしましたが、コピーする権限がないと言われてしまいます。
初心者の質問で、申し訳ございませんが、よろしくお願いいたします。

Aベストアンサー

root権限でやってますか?

QGNUコンパイラとIntelコンパイラの違いについて

今回fortranとC言語で書かれたWindows用プログラムをLinux用に移植することになりました。GNUのコンパイラを使用し無事コンパイルできたので実行したのですが"Segmentation fault"となりうまく実行できませんでした。そこで試しにIntelのコンパイラを使用しコンパイルしてみたところGNUのときとは違い"Segmentation fault"とは出ず、プログラム内のエラーチェックに引っかかり止ってしまいました。同じソースコードにもかかわらず止まる箇所が異なります。
今まで考えたことがなかったのですがGNUとIntelのコンパイラの違いはなんなのでしょうか?また、この二つ以外にいいコンパイラはあるのでしょうか?

Aベストアンサー

#1 の onosuke さんが言われているとおりで、プログラムのバグが原因であることがほとんどでしょう。
移植によって、眠っていたバグが表面化することは珍しくないです。原因を突き止めるしかありません。

例えば、

char *p;
*p = 1;

としたときに、p が初期化されていないので、p の値は不定になりますよね?そうすると、*p = 1 がどこに書き込むかも不定になります。

不定といっても、乱数のようなものではなく、直前のコードで、ある程度固定した値になる可能性が高いです。コンパイラが違えば、その値が Segmentation fault になるかならないかの違いが出ることもあります。

Segmentation fault にならないと、気づかないうちに、別の変数を書き換えていたりすることもあるので、そちらの方が怖いです。


人気Q&Aランキング

おすすめ情報