問題タブ [newlib]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gcc - 最大ネスティング レベルを増やすにはどうすればよいですか?
Raspberry Pi 用のオペレーティング システムを作成したいのですが、クロスコンパイラが必要です。Mac OS X でビルドすることに決め、GNU コンパイラ ツールチェーンと「arm-none-eabi」ターゲットを使用しています。
binutils をビルドし、他の依存関係をインストールした後、クロスコンパイラのビルドを開始しました。GCC バージョン 6.2.0 を使用しています。'make all-gcc' を実行すると、プロセスが失敗し、次のエラーが返されます。
しかし、fbracket-depth を使用してより高いブラケットのネスト レベルを設定するように指示することの意味がわかりません。
この fbracket-depth をどこに配置し、どのくらいの高さに設定する必要がありますか?
makefile - STM32F103でprintfを動作させるには?
STM32F103 の世界は初めてです。STM32F103 のデモ コードがあり、arm-none-eabi を使用してコンパイルしています。
Google で見つけたものを試しましたが、これまでのところ何も機能しませんでした。私はすでにこの問題に 3 日を費やしました。
誰でもうまく動作するprintfのデモコードを教えてもらえますか?
私のメイクファイルの一部:
c++ - C+11 および Newlib を使用する場合のエラー「sigemptyset はこのスコープで宣言されていません」
sigemptyset
Cygwin で Newlibを使用すると、コンパイラ エラーが発生します。このエラーは C++ コンパイラで発生しますが、使用されている場合のみ-std=XXX
です。標準オプションがない場合、テスト プログラムは期待どおりにコンパイルおよび実行されます。
以下にテスト プログラムを示します。関心のある Cygwin ヘッダーが続きます。Cygwin ヘッダーに疑わしいものは何もありません。
#define _GNU_SOURCE
や などのトリックを試しました#define _XOPEN_SOURCE 700
。std
また、グローバルや名前空間を使用するなどのトリックも試しました。関連して、「-D_XOPEN_SOURCE の機能と意味は何ですか?」を参照してください。c ++ 11の名前空間の問題? .
コンパイルが失敗する原因とその修正方法を教えてください。
がないと、次の-std=XXX
ようになります。
を使用すると、次の-std=XXX
ようになります。
そしてsigemptyset
、グローバル名前空間で使用しようとすると:
gcc - arm-none-eabi ツールチェーンを使用して elf に .symtab アドレスとフラグを設定し、メモリにロードします。
.symtab
gdb デバッガーでメモリにロードしたいと思います。
通常のセクションでは、最大で 2 つのステップが必要です (一部のセクションでは.text
、.data
、 ... など、ステップ 1 をスキップできます。これは、ld によって自動的に設定されるためです)。
1 - Alloc フラグ (特別なセクションの場合) を ELF のセクションに設定します。これは、通常のセクションに対してこの方法で実行できます。
2 - アドレスをセクションに設定します。これは、通常のセクションのAFAIKに対して2つの方法で実行できます
A - テキスト セクションなど、LD スクリプトでセクション メモリ領域を指定します。
B - 再度 objcopy を使用する
リンカーによって自動的に生成されるため.symtab
、通常のセクションとして扱うことができないため、上記の手順はどれも機能しません。
誰でもこれを解決する方法について何か考えがありますか?
不要なセクションをすべて削除する新しいエルフを生成する回避策を既に実装しましたが、これは機能しますが、2 つのエルフをロードする必要があり、よりクリーンなソリューションを探しています。
linker - ARM Cortex-M マイクロコントローラのリンカー スクリプトを理解する
STMicroelectronics の STM32F746NG マイクロコントローラを使用しています。このデバイスは、ARM Cortex-M7 アーキテクチャに基づいています。サンプル プロジェクトのリンカー スクリプトを理解するためにかなりの時間を費やしました。基本的なことは理解できましたが、まだ大部分を把握できていません。それらの部分を理解するのを手伝ってください。
リンカースクリプトの開始
リンカー スクリプトは次のように開始します。
ベクトル テーブルとプログラム コード
メモリ領域を定義した後、リンカー スクリプトはセクションの定義に進みます。リンカー スクリプトで定義されている最初のセクションはベクター テーブルです。フラッシュ メモリの最初のバイトで終了する必要があります。
ベクタ テーブルを挿入したら、次はプログラム コードです。
e_text
リンカー スクリプトは、フラッシュ内のプログラム コードが終了するアドレスを表すグローバル シンボルを定義します。
定数データ
読み取り専用データも最終的にフラッシュ メモリに格納されます (揮発性の RAM に配置しても意味がありません)。リンカー スクリプトは、.rodata
セクションがフラッシュにある必要があることを定義します。
フラッシュの謎のセクション
一定の読み取り専用データの移動先を定義した後、リンカー スクリプトは、いくつかの「謎の」セクションも最終的にフラッシュに格納するように定義します。
それらのセクションが何であるかはわかりません。それでは、これを最初の質問にしましょう。これらのセクションとは何ですか? また、それらはどのオブジェクト ファイルに表示されますか? ご存じのとおり、リンカー スクリプトはいくつかのオブジェクト ファイルをリンクする必要があります。これらの不可解なセクションがどのオブジェクト ファイルに存在するのか、私にはわかりません。
.ARM.extab
.ARM
.preinit_array
.init_array
.fini_array
以上でフラッシュメモリへの割り当ては終了です。リンカー スクリプトは、RAM に配置されるセクションの定義を続行します。
RAM のセクション
.data
との.bss
セクションは私には明らかです。これについての質問はありません。
リンカー スクリプトは._user_heap_stack
セクションも定義します。
どうやら、このセクションはすぐには使用されません。RAMにスタックとヒープ用の十分なスペースがあるかどうかを確認するためだけに定義されています。そうでない場合 (.
トップ RAM アドレスを超えている場合) は、リンカ エラーがスローされます。
リンカースクリプトの終わり
これがリンカースクリプトの終了方法です。そして正直なところ、私はそれが何をするのか分かりません。これが 2 番目の質問です。次の意味は何ですか?
gcc - クロス コンパイル - エラー: 選択したプロセッサは ARM モードで「fmrx r3,fpexc」をサポートしていません - Beaglebone
ファイルをクロスコンパイルして Beaglebone Black にフラッシュしようとしています。すべて正常に動作しますが、FPU を有効にしようとすると
次のエラーが表示されます
も試しましthumb mode
たが、同じエラーが発生します。もちろん、FPU を初期化するコードの一部を削除すると、正常に動作します。
これらのエラーが発生するのはなぜですか?
Makefile
私はArch、カーネル4.8.1を使用しています
PS私の教授はlinaroクロスコンパイラを使用していますが、問題なく動作します
gcc - GCC 抽出シンボル リストと別のイメージによるリンク
私がやろうとしているのは、画像からいくつかのシンボルを抽出し、別の画像から(リンク)シンボルを使用することです。
armccc/armlink で --symdefs= を指定すると、シンボルとそのアドレスを含むファイルが作成されます。
一方、未使用のシンボルを削除すると、既存のシンボルが更新されるだけです。このファイルをコンパイルに含めると、以前のイメージのシンボルが新しいイメージにリンクされます。
しかし、GNU ツールチェーン (arm-none-eabi-) の同様のアプローチを見つけることができません。arm-none-eabi-nm を使用すると、armcc --symdefs オプションのようなシンボル リストが作成されますが、このシンボル リストを 2 番目のイメージ コンパイルで使用する方法が見つかりません。(また、grep なしでシンボルをフィルタリングする方法はありません)。
他のオプションも arm-none-eabi-objcopy を使用しているようですが、2 番目の画像コンパイルでも使用する方法が見つかりませんでした。
GNU ツールチェーンでは、どうすればそれができるのでしょうか? 何か案が?
一方で、できればKeil uVision IDEにも適用したい。ありがとう。