問題タブ [linux-toolchain]
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.
android - Gradle 'MyApp' プロジェクトの更新に失敗しました。奇妙な種類のエラー
最近、Android Studio を Android Studio 2.1.2 に更新しました。奇妙なエラーが発生しました。エラーは以下に出力されます。これは、新しい Android Studio プロジェクトを作成したときに発生します。
注 : 私は java8 を使用しており、モジュール gradle.build ファイルは以下のようになります。プロジェクトを作成したばかりなので、NDK 関連のファイルは追加していません。
linux - gcc はクロス コンパイルなしで Arm 用のバイナリを生成できますか
いくつかのフラグを gcc に渡すだけで、クロス コンパイラを使用せずに、Intel x64 アーキテクチャで実行されている gcc を構成して、ARM チップ用のバイナリを生成できますか。
c - 動的にリンクされたシンボルに対して C でポインター演算を実行すると、間違った結果になるのはなぜですか?
動的にリンクされたシンボルを含むポインター演算を実行すると、誤った結果が生じるという奇妙な状況に遭遇しました。単にいくつかのリンカ パラメータが欠落しているのか、それともリンカのバグなのかはわかりません。次の例の何が問題なのか誰か説明できますか?
lib.c
次の単純な共有ライブラリのコード ( ) を考えてみましょう。
問題の演算は、 のアドレスfn1
と変数の間のビットごとの AND ですmask
。アプリケーション ( ) は次のようapp.c
に呼び出します。fn2
それは次の出力につながります...
... と に対して同じ結果が期待されるため、これは明らかに正しくありませfn1
んp
。コードは AVR32 アーキテクチャで実行され、次のようにコンパイルされます。
mask
コンパイラは、変数を 32 ビット レジスタ 7 にロードし、& 演算を即値オペランドを持つ 2 つのアセンブラ演算に分割することが最適なソリューションであると考え
ます。
and
命令の即値オペランドはfn1
、共有ライブラリがアプリケーションのアドレス空間にロードされるときのロード アドレスに再配置されないと仮定します。
- この動作は意図的なものですか?
- 共有ライブラリをリンクするとき、または実行可能ファイルをロードするときに問題が発生するかどうかを調べるにはどうすればよいですか?
背景:これは学術的な質問ではありません。OpenSSL と LibreSSL は同様のコードを使用するため、C ソースを変更することはできません。このコードは他のアーキテクチャでも問題なく動作しますが、関数ポインタに対してビット単位の操作を行う理由は明らかではありません。
gcc - mpc、mpfr、gmp を使用しない GCC のビルド
ツールチェーンを構築するために、より古いバージョンのパッケージを使用する必要があります。mpc、mpfr、および gmp パッケージを無効にして gcc をビルドする方法はありますか?