2012-11-10 10 views
9

मुझे पता है कि मैं कंपाइलर को तर्क पारित करने के लिए LOCAL_CFLAGS का उपयोग कर सकता हूं। हालांकि, ndk-build मेरे LOCAL_CFLAGS के बाद विकल्प डालने जा रहा है, और इसलिए उन्हें प्राथमिकता मिलती है। उदाहरण के लिए, मैं -Ofast निर्दिष्ट करना चाहता हूं, लेकिन ndk-build अपने स्वयं के झंडे के बाद -O2 जोड़ता है, और चूंकि केवल अंतिम विकल्प वह है जिसका कोई प्रभाव पड़ता है, मैं कुछ अनुकूलन झंडे सेट के साथ अपने कोड का परीक्षण करने में असमर्थ हूं।एंड्रॉइड एनडीके में कंपाइलर झंडे को नियंत्रित करना?

क्या बिल्ड 0 पर अंतिम विकल्प होने के लिए या ndk-build को कुछ झंडे का उपयोग करने से अक्षम करने के लिए मेरे LOCAL_CFLAGS को मजबूर करने का कोई तरीका है?

उदाहरण के लिए, मेरी LOCAL_CFLAGS पर सेट है:

-Wall -Wno-psabi -Ofast -D CP_USE_DOUBLES=0 -D USE_CHIPMUNK 

और g++ndk-build करता है कि करने के लिए कॉल है:

/Library/Android/android-ndk-r8b/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/arm-linux-androideabi-g++ -MMD -MP -MF ./obj/local/armeabi-v7a/objs/native-activity/Main.o.d -fpic -ffunction-sections -funwind-tables -fstack-protector -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -fno-exceptions -fno-rtti -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -Ijni -Ijni/Chipmunk/include/chipmunk -I/Library/Android/android-ndk-r8b/sources/android/native_app_glue -I/Library/Android/android-ndk-r8b/sources/cxx-stl/stlport/stlport -I/Library/Android/android-ndk-r8b/sources/cxx-stl//gabi++/include -Ijni -DANDROID -Wall -Wno-psabi -Ofast -D CP_USE_DOUBLES=0 -D USE_CHIPMUNK -Wa,--noexecstack -frtti -O2 -DNDEBUG -g -I/Library/Android/android-ndk-r8b/platforms/android-9/arch-arm/usr/include -c jni/Main.cpp -o ./obj/local/armeabi-v7a/objs/native-activity/Main.o

वहाँ वहाँ में एक बहुत है, लेकिन विशेष रूप से ध्यान दें कि यह पहले -Os निर्दिष्ट करता है, तो मेराहै, और उसके बाद -O2 है। यह -Os निर्दिष्ट क्यों करता है यदि यह बाद में -O2 कहता है, मुझे नहीं पता, लेकिन मैं निराश हूं कि मेरा -Ofast ओवरराइड किया जा रहा है।

उत्तर

9

अपने Application.mk को

APP_CFLAGS += -Ofast 

जोड़ें।

यह -O2 जोड़ने से एनडीके को नहीं रोकेगा लेकिन यह एनडीके के बाद आपका ध्वज रखेगा। यह मेरे लिए एनडीके आर 8 बी के साथ काम करता है।

+0

यह किसी कारण से मेरे लिए नहीं है। मैं वास्तविक प्रश्न को 'g ++' पर दिखाने के लिए अपना प्रश्न संपादित करूंगा। '-O2' अभी भी 'ओफ़ास्ट' के बाद है। – Cornstalks

+0

क्या आप अपनी एप्लिकेशन.एमके फ़ाइल पोस्ट कर सकते हैं? –

+0

क्षमा करें, किसी कारण से मैंने पूरी तरह से इसे गलत तरीके से पढ़ा और इसे 'LOCAL_CFLAGS' के रूप में देखा। यह मेरे लिए काम किया, धन्यवाद! – Cornstalks

संबंधित मुद्दे