• 締切済み

GCCのオプション

GCCで組み込み用のソフトを作る時に、初期値付き変数の初期値をROMに変数をRAMに配置する為のオプションを教えてください。

  • tadys
  • お礼率50% (1/2)

みんなの回答

  • R32C
  • ベストアンサー率39% (115/290)
回答No.1

ROM,RAMの配置を指定するのは、-T でリンカスクリプト ファイル名を書きます。 リンカスクリプトにセクション毎のアドレスなどを指定 します。 gccのヘルプを見ても詳しく書かれていませんが、これは、 gccからリンカーであるldが呼びだされています。 ldでぐぐって見れば詳しくわかると思います。

参考URL:
http://www.google.co.jp/search?hl=ja&q=ld+%E4%BD%BF%E3%81%84%E6%96%B9&lr=

関連するQ&A

  • gccの最適化オプションで挙動がおかしくなる

    コンパイラの最適化オプション -Osをつけると、下記のソースの終了コードが255になってしまいます。 最適化を行わない時や最適化を-O1にしたときは、0を返します。 本来は0が返ると思うのですが、なにかコードの書き方に何か問題ありますでしょうか? 環境は、 gcc 4.2、Mac Xcode 3.1.4上でテストしています。 また、ソースの文字コードの種類はSJISにしています。 const unsigned char gStr[3]="\x82\xAC"; int main(int ac, char **av) {  const unsigned char cc=0x82;  if(gStr[0]==cc)   return 0;  else   return 0xff; }

  • 組み込みソフト。ROM領域にデータ

    C でデータに const 属性をつけて、初期値を設定して定義すると、初期値は ROMにテーブルが作られますがデータ自体は RAM領域に配置されます。 RAMの節約のため、ROM領域にデータを配置する方法はないのでしょうか。

  • gccでスタックオーバーフローのチェック

    OS:WindowsXP コンパイラ: MinGW gcc 3.3.3 gccで、スタックオーバーフローの検出を行いたいと思っています。 gcc -v --helpで見ると > -fstack-check Insert stack checking code into the program と書かれているので、そのように指定して、無限に自分を呼び続ける再帰のプログラムを走らせてみました。 gcc -fstack-check testS2.c  ですが、オプションを指定しない時と同じように突然何の前触れもなく終了してしまいます。  このオプションはスタックを使い切るかどうかをチェックするオプションではないのでしょうか。  よろしくお願いいたします。

  • gccのインラインアセンブラ

    コンパイラはgccで、コンパイルオプションでintel形式でコンパイルしています。 shl命令で左シフトしたいのですが、初期値0xfffffffなのに実行結果は0xffdf0000になってしまいます。 コード: asm(" shl %0, 4 " : "=r" (val)) #defineでマクロにしています(valは引数です)。 どうすれば結果が0xfffffff0になりますか。

  • gcc で シフトJISを通す方法をお教えください

    gcc で linux のソフトの開発をやっております。いろいろな都合でWindowsとソースの共通化をするため日本語はシフトjisを使っているのですが、たとえば"ソ"などで\をつけないといけません。しかし、これだと今度はWindowsで通らなくなります。私はゲーム機の開発もやってるのですが、私が使っているゲーム機用のgccは、なにかパッチがあててあるのか、LANG=C-SJIS と環境変数を定義しておけばシフトjisを通してくれます。linuxの普通のgccでも同じようなことをできるようにするパッチはないでしょうか?

  • GCCでの割り算の方法を教えて下さい。

    SH2の組み込みシステムのソフトをGCCにて開発しています。分母が変数の下記のような割り算のプログラムを作成した所LINKエラーが出て困っています。ちなみに分母が定数の時はOKです。どなたか初心者なので易しく解説して頂けないでしょうか?よろしくお願い致します。 ~ int a,b = 10; a=30/b; ~ エラー内容 undefined reference to '__sdivsi3'

  • gccによって、BOM付きのUTF-8で出力する

    こんにちは。 gccコマンドは、cygwinに付属していたものを使っています。 fopen関数でファイルを出力用にオープンし、fputs関数などで、何かしらの文字を書き込むCソースファイルを作成したとします。 このCソースファイルから、実行ファイルをビルドする際、 gccコマンドをオプション無しで使って実行ファイルをビルドし、その実行ファイルを実行すると、エンコーディングが"BOM無し"のUTF-8である出力ファイルが作成されます。 ですがこれだと、Emacsなどで開いた時に、バッファのコーディングシステムがraw-textになって、文字がきちんと表示されません。 gccコマンドには、ビルドされた実行ファイルが、エンコーディングが"BOM付き"のUTF-8であるファイルを出力するように指定する、オプションはありますでしょうか? 今回、ググっても1つも手掛かりが見つからなかったので、質問させて頂きましたので、 gccに詳しい方、是非よろしくお願い致します。

  • Option Explictについて教えてください

    WEBでOption Explictを検索したら ------------------------------------ option explicit を指定して実行すると、 「コンパイルエラー変数が定義されていません。」 のエラーが出て、青色に反転します。 つまり、単純ミスが防げます。 option explicit が無いと ミスがミスと分からずに実行しますので、 間違った結果が出てしまいます。 option explicit は無条件に定義しましょう。 ---------------------------------- 変数の宣言を強制されるため、 変数のタイプミスを防ぐことができます。 ---------------------------------- 初心者はVBEの「ツール」の「オプション」 「編集」を選択して「変数の宣言を強制する」 (初期状態ではチェックがついていません) には必ずチェック。 ------------------------------------ 変数を宣言しているのはユーザーの環境が、 Option Explicit と明示的に変数を宣言することを 要求されている可能性があるので「エラーが出ました」 という場合があるからです --------------------------------- など色々と見つかりました。 一番わかりやすかったのは ↓これでした。 http://okwave.jp/qa/q4304440.html また以下のような説明もありました。 Option Explicitをつけた場合とつけない場合で 下のソースを実行してみてください。 abc = "Hello" Msgbox(adc) ↓ で説明のように試してみたら ・つけた場合→コンパイルエラー ・つけない場合→エラーにならずMsgboxは空白 でした。これは理解できました。 ですが以下の場合 Option Explicit Sub Macro1() Sheets("Sheet1").Select Columns("A:A").Select Selection.Copy Columns("C:C").Select ActiveSheet.Paste Application.CutCopyMode = False Range("A1").Select End Sub 多分変数は宣言していないので 「変数が定義されていません」とエラーが出ると 思ったのに、でませんでした。 >変数の宣言を強制されるため >Option Explicit と明示的に変数を宣言することを >要求されている可能性 の説明からの自分の解釈と合致しません。 option explicitを指定すると 【記述内に変数宣言がないとエラーになる】 と解釈したのですがそれは間違っていますか? それともSub Macro1()はどこかに変数宣言が あるのでしょうか? 凄くわかりやすく教えていただきたいです。 【追記】 退職者が残したエクセルファイルにて。 Sheet1~Sheet8まであります。 VBEで見ていくと Sheet1:Option Explict  Sheet2:Option Explict  Sheet3:Option Explict  Sheet4:Option Explict  Sheet5:Option Explict  Sheet6:何も無し Sheet7:Option Explict  Sheet8:Option Explict  次に標準モジュールを見ると Module1:Option Explict Sub Macro2() Module2:Option Explict Sub Macro3()  Module3:Option Explict Sub Macro4() Module4:Option Explict Sub Macro5()  Module5:Option Explict  Module6:Option Explict Sub Macro1() となっています。 Macro1~Macro5は全て マクロの記録のみで作成されています。 これを修正するのですが、Option Explictを 初めて見たので困惑しています。 よろしくお願いします。

  • LinaxのCコンパイラ gcc の内部構造を教えて下さい

    今、コンパイラの仕組みについて勉強しています。 gccの仕組みについていろいろ調べているのですが なかなか資料が見当たりません。そこで是非これ に関して情報をお持ちのかたは御提供下さい。ど のような情報でも構いませんができれば次の情報 についてをお願いします。 1)gcc の構文解析の仕組み 2)最適化オプション -O2 を用いた時と通常のコンパイル時との構文解析の違い 3)ターゲットプロセッサ(CPU)に依存した構文解析の動作

  • GCCで関数の引数が渡らない

    gcc Ver2.9 でSH-2の開発をしています。 通常に関数を作成し、引数を渡しているのですが、引数が渡らないという現象が起きています。 現象は、 1.引数はポインタではなく値渡しである 2.引数の値が0の時だけ正しく渡らない。値が0以外の時は正常にわたる 3.引数の型は一致している 4.引数は複数あるが、後半のいくつかがだめ(何個とまでは詳しく調べていません) 5.ある特定の関数の特定の呼び出しのみがだめで全てだめというわけではない 6.コンパイルオプションに -m2 をつけるとだめだが、-m1 オプションだと問題ない 7.最適化オプションをなくしても同じだった といった状況です。 上記5からある特定の記述方法とか順序になるとだめになるのではないかといろいろ試してみたのですが見つけられません。6から記述方法に誤りがあるとも考えにくい状況です。コンパイラのバグといって片付けていいものなのかどうかです。どなたか同じような経験をされた方はいらっしゃいませんか。また関数呼び出しの場合、コンパイラがどうやって引数を渡すかご教授願えませんか。

専門家に質問してみよう