NDK r5が、プリコンパイルされた共有ライブラリをサポートするために始めました。プリコンパイルされた共有ライブラリは、Androidシステムが来るのではなく、他の場所から共有ライブラリをコンパイルするソースコードを取得することです。次のように:
1.ステートメント共有ライブラリモジュールが
別々の共有ライブラリモジュールを宣言します。もしAndroid.mk libfoo.soと同じディレクトリにあります。Android.mkは読んでください:
= $(マイ-dirの呼び出し):LOCAL_PATH
$インクルードは(CLEAR_VARS)が含ま
FOO =#-theビルド済みのモジュール名:LOCAL_MODULE
LOCAL_SRC_FILES:= libfoo.so#モジュールファイルパス(相対LOCAL_PATH)
$これはBUILD_SHARED_LIBRARYされていないこと(PREBUILT_SHARED_LIBRARY)#(注)などが
共有オブジェクトを$ PROJECT / OBJ /ローカルおよび$ PROJECT / libsに/ <ABI>にコピーされますが (ストリップオフ)
図2に示すように、他のモジュールに共有ライブラリ参照
Android.mk、共有ライブラリモジュール添加LOCAL_STATIC_LIBRARIESの名前(静的ライブラリ)またはLOCAL_SHARED_LIBRARIES(DLL)で
たとえば、方法をlibfoo.so使用:
$(CLEAR_VARS)が挙げられる
LOCAL_MODULEを:= FOO-ユーザ
LOCAL_SRC_FILES:= FOO-user.c
LOCAL_SHARED_LIBRARY:= FOO-ビルトインは、
ザは$(BUILD_SHARED_LIBRARY)を含む
共有ライブラリのヘッダファイルがエクスポートされるように、3
本の共有ライブラリは、一般に、そこFOO libfoo.soのような適切なヘッダファイルを有しています。時間。
(Android.mkで書かれた)簡単な方法:
$ザは、(CLEAR_VARS)が挙げられる
FOO = prebuilt-:LOCAL_MODULE
LOCAL_SRC_FILES:= libfoo.soため
LOCAL_EXPORT_C_INCLUDES:= $(LOCAL_PATH)/含ん
含む$(PREBUILT_SHARED_LIBRARY)
従って、共有ライブラリモジュールを使用してその変数になり、ヘッダLOCAL_C_INCLUDESに添加し検索パス。
図4は、デバッグ共有ライブラリは、
共有ライブラリのデバッグ情報を保持示唆しています。<ABI>共有ライブラリ・ディレクトリの後に$ PROJECT / libsに/(なしデバッグ情報)がストリップされています。デバッグバージョンは、NDK-GDBを使用することができますがあります。
5、共有ライブラリABI
ターゲットシステムとの互換性の共有ライブラリABIは非常に重要です。
TARGET_ARCH_ABIを確認し、次の値があります。
armeabi => ARMv5TE以降上記
armeabi-v7a =>のARMv7以上
のx86 =>のx86
ABIは、すべてのARM CPU上で実行することができますarmeabi:推奨します。
////////////////////////////////////////////////// ////////////////////////////////////////////////// ///////////////////
まずLOCAL_CFLAGSに導入
すべてのソースファイルにマクロ定義の#define XXXを追加するLOCAL_CFLAGS + = -DXXX相当
1、-Wall
これは、オープン警告スイッチです
2、-O
-O0最適化されていない、-O1低レベルの最適化、-O2中間レベルの最適化、-O3高度な最適化、-Osコードスペースの最適化:デフォルトの最適化オプションを表します
3、-g
デバッグ情報が生成され、デバッグ情報とソースコードを有する生成された実行可能ファイルは、関連します
4、-fopenmp
OpenMPのは、リードのOpenMPの建築審査委員会によって提案され、広く受け入れられている、指導プログラムは、システム設計(コンパイラ指令)に、マルチプロセッサの共有メモリ並列プログラムの処理をコンパイルします。C言語、C ++およびFortranなどのプログラミング言語のためのOpenMPのサポート、およびサポートのOpenMPコンパイラはそうでSunコンパイラ、GNUコンパイラとインテルコンパイラーとが含まれます。OpenMPのは、コンパイラが自動的に並列化プログラム、同期および相互排除が必要な場合に追加できる、彼らの意思を示すために、ソースコードに特殊なプラグマプログラマを追加することによって、記載並列アルゴリズムの高レベルの抽象化を提供します通信。あなたはこれらのプラグマを無視することを選択、またはコンパイラは、OpenMPをサポートしていませんが、また、プログラムが(通常はシリアル)通常の手順に縮退すると、コードがまだ正常に動作することができますが、プログラムの実行を高速化するためにマルチスレッドを使用することはできません。
5、-D
グローバル・マクロ定義増やす
6を、-ffast、数学
-ffast-数学浮動小数点最適化オプション:劇的浮動小数点演算の速度を上げます
7、-mfloat-ABI = softfp浮動小数点
8、例外標準ライブラリの例外
9、LOCAL_LDFLAGS = -fuse-LD = BFD
CFLAGS = -g -O2 -Wall -Werror -Wno、未使用
対応する言語は、
-S
だけアセンブリコードが生成、コンパイルをコンパイルしない
-Eを
のみプリコンパイルされた、他の処理
-g
実行における標準デバッグ情報を含む
-oファイル
出力ファイル内のファイルへの出力が
-v
プリントアウトしません内部コンパイラコンパイラのバージョンコマンドライン情報、各プロセスのためのコンパイラ
-I dirの
検索パスリストのヘッダファイルにDIRディレクトリを追加
-L dirを
ライブラリファイルの検索パスリストにDIRディレクトリを追加
-static
リンク静的ライブラリ
-llibrary
ライブラリと呼ばれるライブラリファイルをリンク
---------------------
出典:CSDN
オリジナルます。https://blog.csdn.net/smfwuxiao/article/details/6591927