問題タブ [rvds]
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.
linux - 共有ライブラリからシンボルをエクスポートする方法
Windows ホストで RVDS コンパイラを使用して、オブジェクト コード ファイル (C ソース コード) を使用して共有ライブラリ ( *.so
) を作成しました。*.o
この共有オブジェクトをアプリケーション ( gcc
Linux ホスト上の ARM ターゲットに使用) にリンクし、実行時にセグメンテーション エラーを生成する実行可能ファイルを取得します。(私はそれをデバッグしなければならないことを知っています!)
共有ライブラリを作成する代わりに、同じソース ファイルを使用して静的ライブラリを作成し、アプリケーションとリンクしてアプリケーションを実行すると、期待どおりに動作します。
だから私の質問は:
アプリケーションとリンクしたときに正常に動作するように、いくつかの構成を使用してソース ファイル内のシンボル (アプリケーションにエクスポートされた関数) またはその他のシンボルを明示的にエクスポートする必要がありますか? 何が必要で、どうすればよいですか?
共有ライブラリはどのように機能しますか? つまり、関数がロードされて実行されるアドレスは、ライブラリが作成されたときにライブラリに与えられます。
main()
アプリケーション ( ) は、ライブラリ関数が実行されるアドレスをどのように解決しますか?スタティック ライブラリはどのように機能しますか。つまり、スタティック ライブラリの場合、このアドレス指定と解決はどのように行われるのでしょうか?
beagleboard - BeagleBoard 用の Hello World 実行可能ファイルを作成する
BeagleBoard で HelloWorld プロジェクトを実行しようとしています。このために、私は RVDS を使用してライブラリを作成し、次に CodeSourcery を使用して BeagleBoard の実行可能ファイルを作成しています。
RVDS を介してライブラリを作成するには、以下のコマンド ラインを使用しています。
armcc --cpu cortex-a8 -c hello_world.c --c99 --apcs=/fpic --no_hide_all -O3 -Otime --vectorize --no_unaligned_access -I"D:\RVDS\hello_world" -I"C:\Program Files\ARM\RVCT\Data\4.1\713\include\windows"
ただし、このコマンド ラインはオブジェクト ファイルのみを作成し、ライブラリは作成しません。コマンドを使用してライブラリを作成しましたarmar
が、これが正しいかどうかはわかりません。したがって、私の最初の質問は、RVDS コマンド ラインを使用してライブラリを作成する方法です。
また、新しいスタティック ライブラリ プロジェクトを選択して、RVDS Eclipse 環境を使用してライブラリを作成しようとしました。ライブラリが作成されたら、CodeSourcery を使用して、次を使用して実行可能ファイルを作成しました。
arm-none-linux-gnueabi-gcc -Wall -I. -L. test_hello_world.c -lhello_world -o test_hello_world
しかし、この実行可能ファイルを BeagleBoard で実行しようとしても、うまくいきません。したがって、ライブラリの作成方法に問題があると思います。
誰かが RVDS と CodeSourcery を組み合わせて BeagleBoard の実行可能ファイルを作成しようとした場合はお知らせください。
ご協力いただきありがとうございます。
neon - fpuをSoftVFPまたはnoneに設定して、CortexA8でNEONを有効にします。
RVDS4.0を使用してCortexA8の実行可能ファイルをビルドしようとしています。私のコードはNEONを使用していますが、fpuオプションをnoneまたはSoftVFPに設定したいと思います。ARM Webサイトには、fpuがSoftVFPに設定されている場合にNEONが無効になると記載されています。これは、VFPとNEONがレジスタを共有しているためですか?
fpuがSoftVFPに設定されている場合にNEONを使用できない理由、またはfpuがSOftVFPに設定されている場合でもNEONを有効にできるオプションがある場合は、誰かに説明してもらえますか?
ありがとう
integer-division - RVDS での Cortex-M0 による整数除算
64 ビットの整数型を 32 ビットの整数型に分割しようとしています。ツールチェーンとして RVDS 4.1 を使用しています。
Cortex-M0にはハードウェア除数がないので、以下の操作はできますか? もしそうなら、どのように?
makefile - ELF シンボル テーブルにソース ファイルがありません - それらを含める方法は?
私は自分に引き継がれたプロジェクトに取り組んでおり、構築とリンクの概念のいくつかは私にとって新しいものです。メイクファイル、いくつかのアセンブリ ファイルと C ソース ファイル、ELF ファイルとバイナリ ファイルがあります。ELF ファイルをターゲットにロードすると、アセンブリ ファイルではなく、C ファイルのみをステップ実行できます。
ELF ファイルで readelf を実行すると、アセンブリ (.S) ファイルがシンボル テーブルにないことがわかります。同様に、私のデバッガ (RealView Debugger 4.1) は、これらの .S ファイルを「イメージからのソース」ツリーにリストしません。これらのファイルのシンボルの一部 (ラベル名など) が readelf の出力に含まれていますが、ファイル タイプのシンボル自体は含まれていません。メイクファイルを調べて、何が含まれていない可能性があるかを見つけようとしましたが、何を探しているのかわかりません。誰でも私を正しい方向に向けることができますか? ありがとう!
arm - C コードを ARM に移植するには、どのコンパイラを使用する必要がありますか?
私はARMを初めて使用します。私は C コードを書きましたが、すべての ARM プロセッサで動作する ARM にコードを移植しようとしています。スマートフォンやタブレットで動作するようなハイエンドなアプリケーションを開発します。そのための最適なコンパイラを教えてください。RVDS について聞いたことがありますが、それは高価なようです。
もう 1 つの質問は、Microsoft Visual Studio 2008 を使用して、Neon のような ARM Intrinsic をプログラミングできますか? RVDS の他の代替手段はありますか?
あなたのアドバイスは大歓迎です。
c - if(a>0) を最適化し、if(*(&a)>0) を最適化しないコンパイラがあるのはなぜですか?
グローバルスコープで宣言したとしましょう:
メイン関数には、次の条件があります。
私が気づいた厄介なことは、RVDS
コンパイラがif
ステートメントを削除し、オブジェクト ファイルにブランチ/jmp がないことです。
しかし、私が書くと:
if (cmp
およびbranch
) は、コンパイルされたオブジェクト ファイルに含まれます。
対照的に、 do は (またはまたは)GCC
を使用して両方を最適化します。-O1
-O2
-O3
-O3 でコンパイル:
そして、
あげる:
GCC は両方を同じように (あるべきように) 扱いますが、RVDS はそうではありませんか?
私は使用の影響を調べようとしvolatile
ましたが、RVDS では the を削除しましたif(a>333)
が、gcc は削除しませんでした:
おそらく、私が使用した RVDS のコンパイラ バージョンにはいくつかのバグがあります。