2011-12-12 11 views
9

विफल रहता है IOS के लिए अलग-अलग पुस्तकालयों की क्रॉस-कंपाइलिंग कर रहा हूं और आईओएस 5 तक कोई समस्या नहीं थी। ठीक है, जाहिर है मेरी समस्या यह है कि आईओएस 5 एसडीके में जीएनयू जीसीसी कंपाइलर शामिल नहीं है। केवल llvm और clang उपलब्ध हैं।आईओएस संकलन (armv7, i386)। स्क्रिप्ट कॉन्फ़िगर करें: सी प्रीप्रोसेसर सैनिटी चेक

मेरी समस्या यह है कि मैं किसी भी पुस्तकालय की 'कॉन्फ़िगरेशन' स्क्रिप्ट को चलाने के लिए समाप्त नहीं कर सकता। यह हमेशा विफल रहता है के साथ:

configure: error: C preprocessor 
"/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc" fails sanity check 

जीसीसी केवल LLVM संकलक के लिए एक प्रतीकात्मक कड़ी है। अगर मैं इसे क्लैंग करने के लिए सेट करता हूं, तो यह वही त्रुटि उत्पन्न करता है। (बस एक अच्छे सिंटेक्स त्रुटि प्रतिनिधित्व के साथ)

यहाँ config.log का महत्वपूर्ण हिस्सा:

configure:3338: checking how to recognise dependent libraries 
configure:3514: result: pass_all 
configure:3993: checking how to run the C preprocessor 
configure:4111: result: /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc 
configure:4135: /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc -B/Developer/Platforms/iPhoneOS.platform/Developer/usr -arch armv7 -miphoneos-version-min=5.0 -gdwarf-2 -mthumb -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk -L/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/lib/system conftest.c 
conftest.c:14: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'error' 
configure:4141: $? = 1 
configure: failed program was: 
| /* confdefs.h. */ 
| 
| #define PACKAGE_NAME "expat" 
| #define PACKAGE_TARNAME "expat" 
| #define PACKAGE_VERSION "2.0.1" 
| #define PACKAGE_STRING "expat 2.0.1" 
| #define PACKAGE_BUGREPORT "[email protected]" 
| /* end confdefs.h. */ 
| #ifdef __STDC__ 
| # include <limits.h> 
| #else 
| # include <assert.h> 
| #endif 
|   Syntax error 
configure:4135: /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc -B/Developer/Platforms/iPhoneOS.platform/Developer/usr -arch armv7 -miphoneos-version-min=5.0 -gdwarf-2 -mthumb -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk -L/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/lib/system conftest.c 
conftest.c:14: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'error' 
configure:4141: $? = 1 
configure: failed program was: 
| /* confdefs.h. */ 
| 
| #define PACKAGE_NAME "expat" 
| #define PACKAGE_TARNAME "expat" 
| #define PACKAGE_VERSION "2.0.1" 
| #define PACKAGE_STRING "expat 2.0.1" 
| #define PACKAGE_BUGREPORT "[email protected]" 
| /* end confdefs.h. */ 
| #ifdef __STDC__ 
| # include <limits.h> 
| #else 
| # include <assert.h> 
| #endif 
|   Syntax error 
configure:4210: error: C preprocessor "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc" fails sanity check 
See `config.log' for more details. 

यहाँ मेरी वातावरण है। थोड़ा ओवरकिल, लेकिन यह आईओएस 4.एक्स के साथ ठीक काम किया।

# Defines 
DEVROOT=/Developer/Platforms/iPhoneOS.platform/Developer 
SDKROOT=$DEVROOT/SDKs/iPhoneOS5.0.sdk 

# BUILD STUFF 
export CXXFLAGS="-B/Developer/Platforms/iPhoneOS.platform/Developer/usr -arch armv7 -miphoneos-version-min=5.0 -gdwarf-2 -mthumb -isysroot $SDKROOT -L$SDKROOT/usr/lib/system" 
export CPPFLAGS="$CXXFLAGS" 
export CFLAGS="$CXXFLAGS" 
export CPP=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc 
export CXXCPP=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++ 
#export CXX=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++ 
export CC=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc 
export LD=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ld 
export RANLIB=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ranlib 
export AR=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ar 
export STRIP=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/strip 
export LIBTOOL=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool 
export INSTALL_DIR=/Users/mriedel/MPI/CrossCompiling/armv7_dev_install 
export CPATH=$INSTALL_DIR/include 
export LIBRARY_PATH=$INSTALL_DIR/lib 

मैं इसे सप्ताहों के लिए समझने की कोशिश कर रहा हूं, लेकिन कोई भाग्य नहीं है। मुझे लगता है कि अन्य लोगों को इस समस्या में आना चाहिए था। लेकिन Google ने कुछ भी नहीं लाया। एक समय के लिए, मैंने gas-preprocessor.pl का उपयोग करने की कोशिश की, लेकिन बिना किसी किस्मत के।

आह, मेरी कॉन्फ़िगर कॉल हमेशा इस के समान हैं:

./configure --prefix=$INSTALL_DIR --disable-shared --enable-static --host=arm-apple-darwin 

मैं कहना है कि यह सही समस्या मेरी सभी पुस्तकालयों कि शेयरों कॉन्फ़िगर का उपयोग के साथ होता है चाहता हूँ। कुछ नाम करने के लिए: apr, apr-util, expat, log4cxx आदि ... मुझे यह भी सुनिश्चित नहीं है कि वांछित आउटपुट क्या होना चाहिए। कोड के बीच में केवल एक अजीब तरह से 'सिंटेक्स त्रुटि' है। कोई आश्चर्य नहीं कि यह संकलित नहीं है :)।

आगे बढ़ने के तरीके और सहायता की सराहना की जाएगी। धन्यवाद।

+0

ठीक है अगर मैं जोड़ने के '-E' मैन्युअल जीसीसी कॉल कि त्रुटि मैं वास्तव में इस त्रुटि अतीत को छोड़ करने में सक्षम हूँ फेंकता है। लेकिन फिर यह अगले में चला जाता है :)। – rado0x54

उत्तर

13

मैं एक ही मुद्दे में भाग गया। कुछ पोकिंग के बाद, मेरी समस्या यह साबित हुई कि मैं CPP को स्पष्ट रूप से सेट कर रहा था। कि सेट नहीं है (और वास्तव में, 'सेट नहीं' यह अगर यह सेट है)। यदि यह सेट नहीं है, तो डिफ़ॉल्ट रूप से $CC -E प्रयास करता है। यदि यह सेट है, configure-E स्वचालित रूप से नहीं जोड़ता है। इसके अलावा, -E को CPPFLAGS स्थापित करने से काम नहीं करता है, क्योंकि इन झंडे भी अन्य कदम के लिए पारित कर रहे हैं।

+1

बिल्कुल सही। मुझे सीपीपी और सीपीपी फ्लैग को परेशान करना पड़ा। धन्यवाद लाखों अब यह ठीक काम कर रहा है। – rado0x54

+0

तो कैसे प्रणाली है जो संकलक का उपयोग करने के (क्योंकि आप पार संकलन कर रहे हैं)? शायद मैं यहाँ कुछ याद कर रहा हूँ? – mfcabrera

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