GDL(GCC DEVELOPER LITE)のコンパイルについて
- GDLを使用したH8/3048Fマイコンのプログラミングについての質問です。GDLはリンクまでを一気に行いますが、複数のC言語ソースファイルをリンクさせる方法がわかりません。
- 初心者がGDLを使用してH8/3048Fマイコンのプログラミングをする際、複数のC言語ソースファイルをリンクさせる方法についての質問です。
- GDLを使用したH8/3048Fマイコンのプログラミングで、複数のC言語ソースファイルをリンクさせる方法についての質問です。
- ベストアンサー
GDL(GCC DEVELOPER LITE)のコンパイルについて
H8/3048Fマイコンのプログラミングをやりはじめた初心者です. これから、秋月製のコンパイラ、アセンブラ、リンカではなくGDLを使用しようと思って、今日から使用し始めたのですが、GDLはリンクまでを一気に行ってしまうのですね。 例えば、A.c,B.c,C.cの三つのC言語ソースファイルをコンパイルして3つをリンクさせようとする場合はどのようにしたらよいでしょうか? 一つ一つコンパイルしてオブジェクトファイルを作成する方法がよくわかりません(マニュアルやヘルプの説明が短い・・・)。 3048Fマイコンを買ったときについてきたサンプルプログラムをコンパイル、リンクしようと考えてるのですが、そこでつまづいています. 3つのC言語ソースファイルを1つにしてやったらできましたが、.MOT形式の出力ファイルがもともと存在していたファイルとサイズがぜんぜん違っているので、何かおかしいのではないかと考えています. 何かわかることがありましたら、何でも良いので教えてください.
- utaibito33
- お礼率64% (34/53)
- C・C++・C#
- 回答数1
- ありがとう数0
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
GDLはあくまで簡易版みたいなので、複数のソースをリンクして扱うことが出来ません。 自分でgccのコマンドでコンパイル・リンクするか、makefileを作成してmakeしてやり必要があります。 >3つのC言語ソースファイルを1つにしてやったらできましたが、.MOT形式の出力ファイルがもともと存在していたファイルとサイズがぜんぜん違っているので、何かおかしいのではないかと考えています. コンパイラやライブラリが違ったらファイルサイズが違うのは当たり前だと思いますが。 そのプログラムが動けば問題ないと思いますよ。
関連するQ&A
- GCCによるコンパイルについて
現在、H8/3052hのマイコンにCファイルを"GCC"でコンパイルし拡張子をmotに変換して転送したいのですが、エラーがないのにコンパイル成功できなくて困っています。 非常に難しい質問で申し訳ないのですが、解決策、又は問題解決のヒントに繋がる回答をよろしくお願いします。
- 締切済み
- C・C++・C#
- GDLの環境でH8モニタプログラムの作成について
先日、GDLのコンパイル方法についてたずねて一つ一つ行うことが可能になりました!ありがとうございます。 また質問になってしまいますが、H8のフラッシュROMにGCCのライブラリとモニタを同時に書き込むために、現在GDLの環境でルネサスさんからダウンロードしたモニタプログラムをコンパイルしようとしています。 モニタプログラムは秋月製のコンパイラを使用しした場合、参考ホームページもたくさんあり、うまく出来たのですが、GDLで行うとなると、環境が違うのか 例として AAA.src というファイルがアセンブラ言語で書かれていた場合、アセンブルを行うとエラーが発生してしまいます。 やはり、環境が違うため書き方が違うみたいです。 プログラムの内容は全く初心者で、そのファイルの内容をどのように変えればうまくコンパイルできるかわかりません。何でもいいので参考になるようなものがあれば、教えていただきたいです。 また、GDL環境でモニタプログラムを作成しているようなページがあれば教えていただきたいです。 聞いてばかりで申し訳ないですが、よろしくおねがいします。
- ベストアンサー
- その他(プログラミング・開発)
- Cコンパイラ(gcc)について
はじめまして。 C言語のコンパイラについてお尋ねしても宜しいでしょうか。 以下のファイルが存在します。 ・test.c(C言語のソースファイル) ・test.exe(上記ソースをコンパイルしたもの。Windows環境で現在稼動してます) test.cの中身を一部変更し、コンパイルする必要があるのですが、 (恥ずかしながら、コンパイルした人間はもう居ないので) 何のコンパイラを使ったか、判りません。 コンパイルするときに使用したであろうコマンドがあります。 gcc test.c -WALL -03 -o test.exe 察するに、gccというコンパイラを使用したと思い MiniGW (http://yanchde.gozaru.jp/mingw/wingw_start.html) を使用してコンパイルをしてみました。 コンパイルは通るのですが、出来上がるexeファイルのサイズが 非常に小さいです。 (オリジナルのtest.exeは500KB以上ありますが、今回コンパイルで出来たものは40kbほどです) この場合、、オリジナルのtest.exeと今回コンパイルしたexeは 異なる挙動をする可能性はありますでしょうか。。 初歩的な質問で恐縮ですが、どうかご教授頂けると、幸いです。
- 締切済み
- C・C++・C#
- H8300-hms-gccでコンパイルできない
H8マイコンの開発環境(C言語)をcygwinにインストー ルしましたが,h8300-hms-gccでコンパイルできません. ソースファイルが保存されているディレクトリでコンパ イルしてるにもかかわらず,No such file or directry となって,ソースファイルを認識しないのです.一方, 通常のgccではコンパイルできます. echo $PATHで確認しましたが,h8300-hms-gccが保存さ れている/usr/local/binへのパスは通ってます. 何が原因なのか全く分かりません. 宜しくお願いいたします. OSはWindows 2000です.
- 締切済み
- C・C++・C#
- gccでの分割コンパイルについて
参考書に分割コンパイルの方法が書いてなかったので質問させていただきます。 現在3つのソースファイルがあります。 1.header.h (関数プロトタイプ宣言) 2.kansu.c (関数の定義) 3.main.c (main()関数) ここで、main.cがheader.hをincludeしています。 このときの分割コンパイルはどのようにしたら良いのでしょうか?Makefileを作成するのでしょうか? 自分自身分割コンパイルの経験はありません。 環境は Cygwinを使ってのWindows XP コンパイラはgcc もうひとつは Visual Studio.netを使っての環境です。
- ベストアンサー
- C・C++・C#
- コンパイルの実行の仕方
初めてプログラミング言語を授業でとったのですが、 コンパイルの【実行】の仕方がわかりません。 まず、コマンドプロンプトを開くまではわかったのですが、 学校での説明に 「javaのコンパイラはjavacであるので、以下のように指定する。 javac <ソースファイル名> 」 と書いてありました。 コンパイラというのは上記の場合、コマンドプロンプトに 「C:\>javac *****.java」を入力すればコンパイルしたということになるのでしょうか? 「指定する」とかいてあっても指定の仕方すらわからないのです。 コンパイルを検索してもなかなかコンパイルをする意味がよくわからないので、よろしければ教えてください。
- 締切済み
- Java
- PICプログラム C言語とアセンブラ言語
PIC18シリーズを使用して、プログラミングをしています。コンパイラはCCS-Cです。今まではすべてC言語で書いてきたのですが、アセンブラでしか設定ができない部分があり、今までのC言語のソースに加えてアセンブラを組み合わせようと思っているのですが、C言語とアセンブラを組み合わせることは可能なのでしょうか?
- ベストアンサー
- 物理学
- Cコンパイル時のマルチデファイン優先
Cコンパイル時にincludeファイルの都合上、マルチデファインになってしまいます。 この点はコンパイラが宣言無視をしてくれるのですが、extern優先にしてリンクをするにはどのようにすれば良いのでしょうか。 ファイル内でinclude文(ファイル内)定義より先にextern文でシンボル定義をすれば、extern優先でリンクしてくれるのでしょうか(試して無いのですが)。 コンパラ・リンカ製品の仕様になるのでしょうけれど「マルチデフは絶対ダメ」なコンパイラでない場合、extern宣言を優先にする一般的な方法はありますか 。
- ベストアンサー
- C・C++・C#
- gcc コンパイル killed
gccでC言語で書いたコードをコンパイルしたところ コンパイルには成功したのですが 実行してみると killed と表示されてしまいます #include <stdio.h> int main(){ printf("TEST\n"); return 0; } こんな簡単なものでもコンパイル後、実行すると killedと表示されTESTと表示されません $gcc test.c -o test $./test killed $ この様になります。ldid -Sでコンパイルされたファイルを直すことは可能なのですが どのコードでも毎回、killedという表示になってしまいます 毎回毎回コンパイル後にldidコマンドを使用するのも嫌なので直したいのですが "再インストール以外"の方法で直してみたいです。今後、同じようなエラーが起きた際、役にも立ちますし、Cについての勉強にもなりますので (再インストールでは詳しい原因がわかりません) 原因をご存知の方がいましたらよろしくお願いします。(Linux)
- ベストアンサー
- C・C++・C#