2011-04-02 11 views
14

पर लाइब्रेरीज़ के रोलबैक संगतता संस्करण तो, मुझे अपनी मैकबुक पसंद है, और वह मुझे प्यार करती है। हमारे पास उतार-चढ़ाव है, लेकिन अधिकांश भाग के लिए हमारा रिश्ता मजबूत रहा है। हाल ही में हालांकि हम एक लड़ाई थी। यह बस पर्याप्त बाहर शुरू हुआ। मैं उससे अधिक प्रयोग करने की कोशिश कर रहा था, और अधिक प्रयोगात्मक होने की कोशिश कर रहा था। हमने एसएसई, फास्ट गणित, और शयनकक्ष में अनलॉक करने और हमारे पुस्तकालयों के नए संस्करणों को संकलित करने जैसी चीजें लाईं।मैक ओएस एक्स

यह काफी अच्छी तरह से शुरू हुआ। हम नए पुस्तकालयों का उपयोग करके कुछ कोड संकलित करेंगे, नए पानी का परीक्षण करेंगे। समय के साथ हमारे प्रदर्शन एक जोड़े के रूप में बढ़ी। वह तेजी से काम कर रही थी और मैंने सोचा कि सब ठीक और अच्छा था। फिर चीजें बदतर के लिए एक मोड़ लिया। हम मिश्रण में एक और खिलाड़ी लाया। उसका नाम मटकाब है।

हम मैटलैब के लिए संकलन शुरू कर दिया,

mex CC="gcc" CFLAGS="\$CFLAGS -msse -msse2 -msse3 -ffast-math -ftree-vectorize" LDFLAGS="\$LDFLAGS -msse2 -msse3 -ffast-math -ftree-vectorize" -I/usr/local/include -L/usr/local/lib -lsundials_cvode -lsundials_nvecserial -v -o kry_new.mexmaci64 mex_main.c 

संकलन और जोड़ने महान काम किया। लेकिन फिर समस्या शुरू हुई:

kry_new(param,init,0:60:240,abstol,rtol,1) 
??? Invalid MEX-file 
'/Users/Andrew/Documents/MATLAB/het_optim/kry_new.mexmaci64': 
dlopen(/Users/Andrew/Documents/MATLAB/het_optim/kry_new.mexmaci64, 1): 
Library not loaded: /usr/local/lib/libsundials_cvode.1.dylib 
    Referenced from: /Users/Andrew/Documents/MATLAB/het_optim/kry_new.mexmaci64 
    Reason: Incompatible library version: kry_new.mexmaci64 requires version 
    2.0.0 or later, but libsundials_cvode.1.dylib provides version 1.0.0. 

मैटलैब ने महसूस किया कि हमारे प्रयोग दूर तक चले गए हैं। कि वे पुस्तकालयों के पूरी तरह से अलग संस्करण थे। मुझे नहीं पता कि उसे यह विचार कहां मिला।

$ otool -L kry_new.mexmaci64 
kry_new.mexmaci64: 
    /usr/local/lib/libsundials_cvode.1.dylib (compatibility version 2.0.0, current version 2.0.0) 
    @loader_path/libsundials_nvecserial.0.0.2.dylib (compatibility version 0.0.0, current version 0.0.2) 
    @loader_path/libmx.dylib (compatibility version 0.0.0, current version 0.0.0) 
    @loader_path/libmex.dylib (compatibility version 0.0.0, current version 0.0.0) 
    @loader_path/libmat.dylib (compatibility version 0.0.0, current version 0.0.0) 
    /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0) 
    /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0) 
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.4) 

समस्या libsundials_cvode में था: मैं कुछ की जांच कर रही थी। कोई संस्करण 2 नहीं था, वहां कभी नहीं था। मामलों को और खराब बनाने के लिए, मेरी मैकबुक ने मैटलैब की तरफ ले लिया। मैंने अनइंस्टॉल करने का प्रयास किया, नई चीजों के सभी संदर्भों को दबाकर, हमारी मेक फाइलों को हटा दिया और फिर से शुरू करने की कोशिश की। मैंने अपने पुस्तकालयों को पुराने तरीके से पुनर्निर्माण करने की कोशिश की। लेकिन वे छद्म संस्करण 2 को जाने नहीं देंगे। मुझे नहीं पता था कि उन्हें क्या देना है। मैं बस अपनी अपेक्षाओं को पूरा करने के लिए पर्याप्त आदमी नहीं था।

केवल एक चीज मुझे लगता है कि हो सकता है कि कुछ बिंदु पर, संस्करण 2 भावना बना है, लेकिन है कि मैं इससे दूर किसी भी तरह का समर्थन किया था। मुझे लगता है कि मैंने जो लिंक प्रस्तुत किया था, वह तब भी उनके दिमाग में रहा जब भी मैं वापस गया था। मुझे लगता है कि मैं उन पक्षियों का पहला नियम भूल गया था और मधुमक्खी की बातों को मेरे sys व्यवस्थापक द्वारा दिया गया था, "हर बार जब आप एक गतिशील पुस्तकालय को प्रतीक करते हैं तो आप स्वयं का हिस्सा देते हैं कि आप कभी वापस नहीं आते।"

हताशा मेरे जीवन में दोनों मेरे मैकबुक और मैटलैब रखने के लिए, मैं एक झूठ है कि मैं पर गर्व नहीं कर रहा हूँ कहा:

sudo mv libsundials_cvode.1.0.0.dylib libsundials_cvode.2.0.0.dylib 

मुझे नहीं लगता था कि यह काम करेगा, लेकिन यह किया था। वे अब मेरे कोड को संकलित करते हैं और वे पर्याप्त खुश दिखाई देते हैं। लेकिन मुझे यह महसूस हो रहा है कि मैं इसे सिर्फ फिक्र कर रहा हूं, और मेरा झूठ मुझे काटने के लिए वापस आ जाएगा।

तो, के बाद से डैन सावेज ने बस मुझे ध्यान नहीं देता, मैं चालू करने के लिए आप रिश्ते सलाह के लिए stackoverflow। मुझे किसी भी तरह से मेरी मैकबुक बताएं कि, नहीं, संस्करण 1.0.0 हमारे लिए पर्याप्त है। मैं उसे कैसे सुन सकता हूं और अपने भयानक झूठ के बिना अपने रिश्ते में संगतता मुद्दों को ठीक कर सकता हूं?

+1

मैं मुझे पता था कि ... हालांकि, सभी StackOverflow सवाल संबंध सलाह स्तंभों के रूप में फिर से लिखा जाना चाहिए चाहते हैं। मैं उत्साहित हूं: मुझे उम्मीद है कि कोई और मदद कर सकता है। – stderr

उत्तर

2

मुझे माफ करना अगर मैं गलत पेड़ भौंकने रहा हूँ, लेकिन मैं क्या Sundials बता सकते हैं संस्करण 2.4 पर है से (2.6 पर अलग-अलग पुस्तकालयों के साथ)? https://computation.llnl.gov/casc/sundials/download/download.html। क्या आपने यहां स्रोतों से संकलन करने की कोशिश की है?

मैंने अभी मैक प्रो पर संकलित और स्थापित किया है, बिना किसी समस्या के 10.6.7 चल रहा है! .dylib को स्थापित करने के लिए आपको निम्न का उपयोग करके कॉन्फ़िगर करने की आवश्यकता है अन्यथा यह सिर्फ .la और उत्पन्न करता है।एक

./configure --enable-shared 

मैं अब निम्नलिखित है:

w125-244:sundials-2.4.0 stevemoss$ ls -al /usr/local/lib/libsundials_cvode* 
-rwxr-xr-x 1 root staff 4136 28 Apr 16:07 /usr/local/lib/libsundials_cvode.1.0.0.dylib 
lrwxr-xr-x 1 root staff  29 28 Apr 16:07 /usr/local/lib/libsundials_cvode.1.dylib -> libsundials_cvode.1.0.0.dylib 
-rw-r--r-- 1 root staff 512704 28 Apr 16:07 /usr/local/lib/libsundials_cvode.a 
lrwxr-xr-x 1 root staff  29 28 Apr 16:07 /usr/local/lib/libsundials_cvode.dylib -> libsundials_cvode.1.0.0.dylib 
-rwxr-xr-x 1 root staff  878 28 Apr 16:07 /usr/local/lib/libsundials_cvode.la 
-rwxr-xr-x 1 root staff 4136 28 Apr 16:07 /usr/local/lib/libsundials_cvodes.2.0.0.dylib 
lrwxr-xr-x 1 root staff  30 28 Apr 16:07 /usr/local/lib/libsundials_cvodes.2.dylib -> libsundials_cvodes.2.0.0.dylib 
-rw-r--r-- 1 root staff 926048 28 Apr 16:07 /usr/local/lib/libsundials_cvodes.a 
lrwxr-xr-x 1 root staff  30 28 Apr 16:07 /usr/local/lib/libsundials_cvodes.dylib -> libsundials_cvodes.2.0.0.dylib 
-rwxr-xr-x 1 root staff  885 28 Apr 16:07 /usr/local/lib/libsundials_cvodes.la 

और

w125-244:sundials-2.4.0 stevemoss$ otool -L /usr/local/lib/libsundials_cvode.dylib 
/usr/local/lib/libsundials_cvode.dylib: 
    /usr/local/lib/libsundials_cvode.1.dylib (compatibility version 2.0.0, current version 2.0.0) 
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.10) 

इसके अलावा, शायद एक सिमलिंक अपने उदाहरण में एक mv की तुलना में बेहतर हो सकता है?