Я пытаюсь построить общий объект по следующему рецепту в нашем Android.mk
.Общий объект основан на библиотеке C ++.
include $(CLEAR_VARS)
LOCAL_MODULE := cryptopp_shared
LOCAL_SRC_FILES := $(addprefix $(CRYPTOPP_PATH),$(CRYPTOPP_SRC_FILES))
LOCAL_CPP_FLAGS := -Wall
LOCAL_CPP_FEATURES := rtti exceptions
LOCAL_LDFLAGS := -Wl,--exclude-libs,ALL -Wl,--as-needed
LOCAL_EXPORT_CFLAGS := $(LOCAL_CFLAGS)
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/..
LOCAL_STATIC_LIBRARIES := cpufeatures
include $(BUILD_SHARED_LIBRARY)
Библиотека в основном строится нормально.Некоторые параметры не , такие как -Wall
.Другие параметры, такие как -Wl,--exclude-libs,ALL
, учитываются.
Документы для Android.mk находятся здесь , но в нем не рассматриваются параметры удаления или фильтрации.
Почему Androidсистема сборки не соблюдает все наши флаги?
Вот команда сборки, которую мы использовали.Я строю из корневого каталога библиотеки:
ndk-build V=1 APP_ABI=armeabi-v7a NDK_PROJECT_PATH="$PWD" \
NDK_APPLICATION_MK="$PWD/Application.mk"
Странно то, что все наши исходные файлы - C ++, и ни один из исходных файлов не был построен с -Wall
.Тем не менее, мы импортируем библиотеку cpufeatures для Android, это один исходный файл C, и он был собран с -Wall
:
/opt/android-ndk-r16b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -
MF /home/cryptopp/obj/local/armeabi-v7a/objs/cpufeatures/cpu-features.o.d -gcc-t
oolchain /opt/android-ndk-r16b/toolchains/arm-linux-androideabi-4.9/prebuilt/lin
ux-x86_64 -fpic -ffunction-sections -funwind-tables -fstack-protector-strong -Wn
o-invalid-command-line-argument -Wno-unused-command-line-argument -no-canonical-
prefixes -fno-integrated-as -g -target armv7-none-linux-androideabi18 -march=arm
v7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -Os -DNDEBUG -I/opt/android-ndk
-r16b/sources/android/cpufeatures -DANDROID -Wall -Wextra -Werror -D__ANDROID_
API__=18 -Wa,--noexecstack -Wformat -Werror=format-security --sysroot /opt/andr
oid-ndk-r16b/sysroot -isystem /opt/android-ndk-r16b/sysroot/usr/include/arm-linu
x-androideabi -c /opt/android-ndk-r16b/sources/android/cpufeatures/cpu-features
.c -o /home/cryptopp/obj/local/armeabi-v7a/objs/cpufeatures/cpu-features.o
Учитывая, что я использовал LOCAL_CPP_FLAGS := -Wall
, я думаю, что произойдет обратное - все исходники C ++файлы будут собираться с -Wall
, а один файл C будет создаваться без.