मैं अपने makefile में निम्नलिखित बिट्स है:मैं कैसे पता लगा सकता हूं कि जीएचसी डिफ़ॉल्ट रूप से 32 बिट या 64 बिट कोड उत्पन्न करने के लिए सेट है या नहीं?
GLFW_FLAG := -m32 -O2 -Iglfw/include -Iglfw/lib -Iglfw/lib/cocoa $(CFLAGS)
...
$(BUILD_DIR)/%.o : %.c
$(CC) -c $(GLFW_FLAG) $< -o [email protected]
$(BUILD_DIR)/%.o : %.m
$(CC) -c $(GLFW_FLAG) $< -o [email protected]
-m32
जीसीसी 32 बिट कोड उत्पन्न करने के लिए निर्देश देता है। ऐसा इसलिए है क्योंकि कुछ कॉन्फ़िगरेशन पर जीएचसी 32 बिट कोड बनाने के लिए सेट है लेकिन जीसीसी का डिफॉल्ट कभी-कभी 64 बिट होता है। मैं इसे सामान्य बनाना चाहता हूं ताकि यह स्वतः पता लगा सके कि जीएचसी 32 बिट या 64 बिट कोड बना रहा है और फिर सही झंडा जीसीसी को पास कर देता है।
प्रश्न: मैं जीएचसी से किस प्रकार का कोड (32 बिट बनाम 64 बिट) का निर्माण करूंगा?
पीएस: मेरी कैबल फ़ाइल इस मेकफ़ाइल को कैबल में वर्कअराउंड सीमाओं के निर्माण के दौरान कॉल करती है। मेरी इच्छा है कि मैं इन्हें केवल अपनी कैबल फ़ाइल में सी-स्रोतों के रूप में सूचीबद्ध कर सकता हूं।
मैं इसका उपयोग जीएचसी से शब्द आकार प्राप्त करने के लिए कर सकता हूं, लेकिन मुझे नहीं पता कि यह उपयोग करने का सही मूल्य है: WORDSIZE: = $ (खोल ghc + RTS --info | ghc -e "do c <- getContents; चलो {r = read c :: [(स्ट्रिंग, स्ट्रिंग)]; wsize = Data.Maybe.from बस (लुकअप \ "शब्द का आकार \" आर)}; putStrLn wsize ") –
क्या एक परीक्षण प्रोग्राम संकलित करना उचित है और एल्फ पुस्तकालय (हैकेज पर) के साथ परिणाम पढ़ें? –
आप 'ghc -e' प्रिंट (maxbound :: Int) 'के परिणाम का उपयोग करने में सक्षम हो सकते हैं, जो कि 32 बिट या 64 बिट जीएचसी के आधार पर अलग होना चाहिए ... – hvr