3

私は、Android アプリケーションにNGSpiceシミュレーション ライブラリを含め、もちろんそれを使用できるようにする必要があるプロジェクトに取り組んでいます。

SWIG と Android NDK を使用して NGSpice Windows DLL を Android アプリケーションに含めようとしましたが、それも不可能であることが判明したため、Linux の共有ライブラリとして NGSpice を構築することを検討し始めました。

そして今、私の質問は、私の Android アプリケーションで NGSpice の Linux 共有ライブラリをそのまま使用できるか、それとも私の Android アプリケーションで動作するように別の方法で構築する必要があるかということです。

ありがとう。

4

1 に答える 1

14

いいえ。通常、Android には従来の Linux との主な違いが 2 つあります。

1) glibc などの従来のセットの代わりに、Bionic C ライブラリと動的リンカーを使用します。

2) Android は通常、ARM または 32 ビット x86 プロセッサ (またはまれに MIPS) で実行されますが、デスクトップ Linux ライブラリは 64 ビットまたは 32 ビット x86 コードのいずれかである可能性があります。

マシンのアーキテクチャと、bionic のシステム ライブラリ関数およびダイナミック リンカと互換性のある .so をビルドすれば、動作するはずです。

あるいは、互換性のあるアーキテクチャー用のものを持っているが、libc が間違っている場合は、独自のローダーを作成して、セキュリティで保護されたデバイス上で動作する形式でメモリに格納するか、ルート化されたデバイス上でより伝統的なものを実行できる可能性があります。 chroot の linux ユーザー空間 (通常は Debian 派生)。しかし、どちらも Android アプリケーションに統合するのは簡単ではありません。後者の場合、ほぼ間違いなくプロセス間通信を介して作業を渡す必要があり、前者の場合も同様に簡単になる可能性があります。

本当に承認されている唯一の解決策は、ndk ビルド システム、または ndk によって生成された「スタンドアロン ツールチェーン」とライブラリの現在のビルド システムのいずれかを使用して、ソースからライブラリを再構築することです。

于 2013-10-09T19:12:15.730 に答える