問題タブ [codesourcery]
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.
embedded - ColdFire 開発向けの CodeWarrior と CodeSourcery G++ の比較
ColdFire ファミリ プロセッサ用の組み込みアプリケーションを開発するための、 Freescale のCodeWarriorツール チェーンとCodeSourcery G++との比較分析に興味があります。
c++ - GCC C ++(ARM)および構造体フィールドへのconstポインター
簡単なテストコードがあるとしましょう
これは、ベアメタルARM用にCodeSourcery G ++(gcc 4.3.2)でコンパイルされています。また、非常に標準的なリンカースクリプトもあります。
Cで(main.cとして)コンパイルすると、オブジェクト「データ」は期待どおりにFlashに入ります。C ++で(main.cppとして)コンパイルされると、このオブジェクトはRAMに入れられ、フラッシュからRAMに値をコピーするだけの追加コードが追加されます(値はすでに計算されています。コピーするだけです!)。したがって、コンパイラはアドレスを計算できますが、どういうわけか「それを使用する」ことを望んでいません。問題の根本は、アドレスの乗算です。「* 2」の乗算がないと、両方のバージョンが期待どおりに機能します。「データ」はFlashに配置されます。また、「データ」が次のように宣言されている場合:
また、すべてが大丈夫です。
CおよびC++コンパイルのすべてのファイルは同一であり、唯一の違いはコンパイラーの呼び出しです。main.cppの場合はg ++、main.cの場合はgccです(警告のレベルに違いがあり、c ++ではRTTIと例外が無効になっています)。
この「C++の問題」を克服するための簡単でエレガントな方法はありますか?Cortex-M3のビットバンド領域のビットのアドレスのconst配列を作成するには、このような操作が必要です。これはバグですか、それともC ++コンパイラの奇妙な制限ですか?
「C」ファイルでデータオブジェクトを作成し、「extern」だけでデータオブジェクトを作成できることは知っています。C++にそれらを含めますが、それはあまりエレガントではありません[;
助けてくれてありがとう!
linux - LuminaryMicro 評価ボードへの Linux USB デバッグ接続
Stellaris LM3S8962 評価キットを Linux ホスト マシンに接続しようとしています。開発ツールチェーンに CodeSourcery G++ を使用しています。helloworld の例を実行しようとすると、次のメッセージで接続が失敗します。
arm-stellaris-eabi-sprite: エラー: E104。USB デバイスとの通信で I/O エラーが発生しました。arm-stellaris-eabi-sprite: GDB 接続を待機しており、警告とともにエラーを渡します: リモート障害応答: E.fatal.E104。USB デバイスとの通信で I/O エラーが発生しました。arm-stellaris-eabi-sprite: エラー: E002。初期化されていません
評価ボードを USB ケーブルで接続すると、デバイスがシステムで使用できるようになります。
3 月 24 日 14:37:16 n6-ws2 カーネル: usb 5-2: USB 切断、アドレス 5 24 14:37:19 n6-ws2 カーネル: usb 5-2: 1 つの選択肢から選択された構成 #1
また、コマンドラインツールを介して何らかの方法で接続できるようです(ただし、奇妙な文字が表示されます):
[mlong@n6-ws2 bin]$ ./arm-stellaris-eabi-sprite -i CodeSourcery ARM Debug Sprite (Sourcery G++ 4.4-104) armusb: [speed=] ARMUSB デバイス
armusb:///�̙ - � ( �̙)
私が試すことができる提案はありますか?
どうもありがとう、
マイク
c++ - CodeSourcery でコンパイル エラーが発生しました: ビット/c++config.h がありません
私のプロジェクトでは、線形代数に Eigen C++ ライブラリを使用しています。ARM NEON のベクトル化フラグ (-mfpu=neon -mfloat-abi=softfp) をオンにした場合にのみ、コンパイラ エラー - c++config.h no such file or directory が発生します。
何が問題なのか理解できません。bits/c++config.h は何ですか? この問題を解決するにはどうすればよいですか?
ヴィクラム
main.c
メイクファイル
エラー
c - ARM NEON のコンパイル中に不明な GCC エラーが発生しました (重大)
ARM NEON Cortex-A8 ベースのプロセッサ ターゲットがあります。NEON を利用してコードを最適化していました。しかし、コードをコンパイルすると、この奇妙なエラーが発生します。これを修正する方法がわかりません。
ホストで Code Sourcery (PART2) を使用して次のコード (PART 1) をコンパイルしようとしています。そして、この奇妙なエラー (PART3) が表示されます。ここで何か間違ったことをしていますか?他の誰かがこれをコンパイルして、同じコンパイル エラーが発生するかどうかを確認できますか?
奇妙な部分は、コードの一部をコメントアウトするとelse if(step_size == 4)
、エラーが消えることです。しかし、残念ながら私の最適化はそれなしでは完全ではないので、私はそれを持っている必要があります.
最初は(ホスト上の)CodeSourceyコンパイラに問題があると思ったので、ターゲットでプログラムを直接コンパイルしました(私のターゲットはUbuntuで実行されます)。そこでgccを使用しましたが、もう一度同じエラーが発生し、そのelse if(step_size == 4)
部分をコメントアウトするとエラーが消えます。
ヘルプ!
パート1
パート2
パート 3
android - ルート化されていない Android フォンでネイティブ アーム バイナリを実行することは可能ですか?
さて、私は低レベルの Android プログラミング (CodeSourcery ツールチェーンを使用したネイティブ C/C++) の濁った海に飛び込んできました。エミュレーターで実行可能ファイルを試してみましたが、うまくいきました。実機で試してみたいと思います。そこで、nexus を接続し、ファイルをファイル システムにプッシュしました。次に、バイナリを実行しようとしましたが、パーミッション エラーが発生しました。どのようにマウントするか、またはどこに送信するかは問題ではありません。ルートではないため、実行できません。ルート化されていない電話でこのようなプログラムを実行する方法はありますか?
gcc - MinGWとMSYSがコマンドラインで指定されたパス名を操作しないようにする方法
Windowsでは、CodeSourceryのクロスコンパイラスイートを使用して、ARM/Linux用のプログラムをクロスコンパイルしています。私はコマンドインタープリターとしてMinGWMSYSを使用していますが、パスとパス名が壊れることがよくあります。たとえば、プログラムを作成するには、
もちろん、実行可能ファイル/usr/lib/myrpath
に逐語的に挿入したいmyprogram
のですが、コンパイル対象のARMLinuxターゲットはMinGWまたはMSYSを使用していません。しかし、これが最終的にそれに入るものです:
正確には私が望んでいたものではありません。cmd.exeコマンドラインでGCCを直接呼び出すと、実行可能ファイルで正しいrpathを取得します。MSYSコマンドラインでGCCを呼び出すと、マングルされたrpathが取得されます。cmd.exeコマンドラインからmakeで実行されるMakefileを使用してGCCを呼び出すと、マングルされたrpath(!)が表示されます。
この迷惑な動作をオフにする方法はありますか?
gcc - グローバル gcc のデフォルト検索パスを設定する
実行中
次の出力が得られます。
そして、いくつかのパッケージをクロスコンパイルするとき、これらのパスに追加できるようになると、私の人生がずっと楽になります。-L オプションについて知っていて、それを使用したいのですが、多くのパッケージはクロス コンパイル中にそれを尊重しません。さらに、codesourcery で使用すると問題が発生します。(詳細はこの投稿の最後を参照してください)。基本的に、パッケージをコンパイルするために必要なすべてのファイルを含むディレクトリ ツリー全体があり、そのディレクトリ ツリーをデフォルトの検索パスに追加したいと考えています。たとえば、-print-search-dirs も次のようなパスを出力するようにします。
すでにリストされているパスに加えて。使用できるツールチェーンがいくつかあるため、コードソース固有の回答を探しているわけではありません。
興味のある方のために、codesourcery インストールからのエラーを次に示します。
作品
次のエラーで失敗します:
明らかに、ホストから libc を取得しています。これが複数のツールチェーンで発生するのを見てきましたが、すべてではありません。
コメントへの応答: これ は出力です
c - 翻訳単位の外部で機能する GCC エイリアス -AKA- これは仕事に適したツールですか?
私は STM32 (Cortex-M3) で FreeRTOS を使用しており、ST の CMSIS ライブラリを使用してすべてをブートストラップしています。
CMSIS ライブラリはSVC_Handler
、スタートアップの ".s" ファイルでウィーク シンボルを定義します。割り込みベクター テーブルで ISR を取得するには、どこかでオーバーライドする必要があります。FreeRTOS はvPortSVCHandler
、SVC 割り込みを処理させたい ISR である を定義します。
アプリケーション コードを使用して (つまり、FreeRTOS または CMSIS ソース コードを変更せずに) 2 つを「接着」したいと考えています。エイリアスがこの仕事に適したツールだと思ったので、これを試しました (別のソース ファイル main.c で):
その結果、次のようになります。error: 'SVC_Handler' aliased to undefined symbol 'vPortSVCHandler'
GCC のドキュメント( http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html ) によると、属性を使用するためにalias
、翻訳単位の外でシンボルをエイリアスすることはできません。extern
だから私は次のようにシンボルをmain.cにしようと思った:
これにより、同じエラーが生成されます。助言がありますか???
どちらのライブラリも変更することは避けたいと思います。SVC_Handler
単純に を呼び出す関数を作成できることはわかっていvPortSVCHandler
ますが、ISR に不要なオーバーヘッドが追加される可能性があります (おそらく最適化設定によって異なります)。注: FreeRTOS の例では、カスタム スタートアップ ファイルを介してこれを実現しています。Cまたはリンカー スクリプトからこれを行う方法を探しています。
- コンパイラのバージョン: gcc バージョン 4.5.2 (Sourcery G++ Lite 2011.03-42)
- Target: 腕なしエビ