द्वारा उत्पादित निष्पादन योग्य आकार को कम करें- जीओसी संस्करण 7.4.2 का उपयोग करते हुए झंडे के साथ -ओ 3, मुझे अभी भी भारी निष्पादन योग्य उत्पाद मिलता है। मैं समझता हूँ कि GHC स्थिर जोड़ने करता है, और बाइनरी की निर्भरता की तरह दिखता है:जीएचसी
linux-vdso.so.1 (0x00007fff49bff000)
libpcre.so.1 => /usr/lib/libpcre.so.1 (0x00007fe658d6c000)
librt.so.1 => /usr/lib/librt.so.1 (0x00007fe658b64000)
libutil.so.1 => /usr/lib/libutil.so.1 (0x00007fe658961000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007fe65875d000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007fe658541000)
libcurl.so.4 => /usr/lib/libcurl.so.4 (0x00007fe6582e3000)
libgmp.so.10 => /usr/lib/libgmp.so.10 (0x00007fe658074000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007fe657d7a000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007fe657b65000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007fe6577be000)
/lib/ld-linux-x86-64.so.2 (0x00007fe658fca000)
libssh2.so.1 => /usr/lib/libssh2.so.1 (0x00007fe657595000)
libssl.so.1.0.0 => /usr/lib/libssl.so.1.0.0 (0x00007fe65732b000)
libcrypto.so.1.0.0 => /usr/lib/libcrypto.so.1.0.0 (0x00007fe656f22000)
libz.so.1 => /usr/lib/libz.so.1 (0x00007fe656d0c000
अब तक यह काफी अच्छा लग रहा है, फिर भी बाइनरी अंदर मैं लाइनों देख सकते हैं:
GHCi runtime linker: fatal error: I found a duplicate definition for symbol
* Specifying the same object file twice on the GHCi command line
....BlockedIndefinitelyOnMVar.......BlockedIndefinitelyOnSTM........AsyncException..base....GHC.IO.FD.......FD......GHC.IO.FD.setSize.
और वास्तव में एक बहुत सारे टेक्स्ट लाइन, जिनमें मेरे कार्यों के नाम, अन्य मॉड्यूल में परिभाषित फ़ंक्शंस आदि शामिल हैं। सवाल यह है - क्या उन ग्रंथों को हटाना संभव है, और क्या जीएचसी बाहरी पुस्तकालयों से अप्रयुक्त कोड को खत्म कर सकता है?
आपको प्रश्न पर एक नज़र रखना चाहिए: http: //stackoverflow.com/questions/6115459/small-haskell-program-compiled-with-ghc-into-huge-binary? Lq = 1 - मैंने आपका फ़्लैग किया है इसके संभावित डुप्लिकेट के रूप में सवाल। – epsilonhalbe
यह वास्तव में सच नहीं है - मैंने फ़ाइल को तोड़ दिया और अप्रतिबंधित संस्करण के साथ कोई अंतर नहीं मिला। तो मैं अभी भी बाइनरी के आकार को कम करने के तरीके की तलाश में हूं। – jdevelop
और क्या आपने गतिशील लिंकिंग करने की कोशिश की - जैसा कि आप @ डॉनस्टवार्ट के जवाब में देखते हैं, इसने बाइनरी तरीके को प्रतीकों को अलग करने की तुलना में अधिक कॉम्पैक्ट बनाया है। लेकिन मैं एक विशेषज्ञ से बहुत दूर हूँ। – epsilonhalbe