2012-02-20 14 views
5

डेबियन पर, मैं एक सीएलआईएसपी प्रोग्राम संकलित करने की कोशिश कर रहा हूं जो cl-ppcre पैकेज का उपयोग करता है।एक क्लिस प्रोग्राम को संकलित कैसे करता है जो cl-ppcre का उपयोग करता है?

एक नमूना, सरलीकृत कार्यक्रम (जो मैं संस्करण 1 कॉल करेंगे) इस तरह दिखता है:

(asdf:load-system :cl-ppcre) 

(princ (cl-ppcre:regex-replace-all "a" "abcde" "x")) 
(terpri) 

जब मैंने इसे इस प्रकार भाग गया ::

clisp -q a3.lisp 

मैं यह मिल गया:

home:~/clisp/ercpp/compiling-program$ clisp -q a3.lisp 
; Loading system definition from /usr/share/common-lisp/systems/cl-ppcre.asd into #<PACKAGE ASDF0> 
; Registering #<SYSTEM :CL-PPCRE> as CL-PPCRE 
; Registering #<SYSTEM :CL-PPCRE-TEST> as CL-PPCRE-TEST 
0 errors, 0 warnings 
xbcde 
home:~/clisp/ercpp/compiling-program$ 

लेकिन जब मैंने उसे इस प्रकार संकलन करने की कोशिश की:

clisp -q -c a3.lisp 

मैं यह मिल गया: सफल रन और असफल साथ इसी तरह के परिणाम

home:~/clisp/ercpp/compiling-program$ clisp -q -c a3.lisp 
;; Compiling file /u/home/clisp/ercpp/compiling-program/a3.lisp ... 
*** - READ from 
     #<INPUT BUFFERED FILE-STREAM CHARACTER 
     #P"/u/home/clisp/ercpp/compiling-program/a3.lisp" @3> 
     : there is no package with name "CL-PPCRE" 

0 errors, 0 warnings 
home:~/clisp/ercpp/compiling-program$ 

मुझे मिल गया संस्करण 2 के साथ संकलन:

(clc:clc-require :cl-ppcre) 

(princ (cl-ppcre:regex-replace-all "a" "abcde" "x")) 
(terpri) 

क्या मैं इसे संकलित करने के लिए पाने के लिए क्या करना होगा?

यदि यह किसी उत्तर के साथ आने में मदद कर सकता है, तो मैंने फ़ाइल I/O को संस्करण 1 चलाकर ट्रिगर किया था। मैंने स्ट्रेस का उपयोग किया और कटा हुआ और आउटपुट को केवल प्रासंगिक फ़ाइलों और निर्देशिकाओं के नाम दिखाने के लिए उपयोग किया। जब मैं ऐसा किया:

(asdf:load-system :cl-ppcre)\n\n(p 
/u/home/.cache/common-lisp/clisp-2.48-unix-x86/usr/share/common-lisp/source/cl-ppcre 
/u/home/.cache/common-lisp/clisp-2.48-unix-x86/usr/share/common-lisp/source/cl-ppcre/api.fas 
/u/home/.cache/common-lisp/clisp-2.48-unix-x86/usr/share/common-lisp/source/cl-ppcre/charmap.fas 
/u/home/.cache/common-lisp/clisp-2.48-unix-x86/usr/share/common-lisp/source/cl-ppcre/charset.fas 
/u/home/.cache/common-lisp/clisp-2.48-unix-x86/usr/share/common-lisp/source/cl-ppcre/chartest.fas 
/u/home/.cache/common-lisp/clisp-2.48-unix-x86/usr/share/common-lisp/source/cl-ppcre/closures.fas 
/u/home/.cache/common-lisp/clisp-2.48-unix-x86/usr/share/common-lisp/source/cl-ppcre/convert.fas 
/u/home/.cache/common-lisp/clisp-2.48-unix-x86/usr/share/common-lisp/source/cl-ppcre/errors.fas 
/u/home/.cache/common-lisp/clisp-2.48-unix-x86/usr/share/common-lisp/source/cl-ppcre/lexer.fas 
/u/home/.cache/common-lisp/clisp-2.48-unix-x86/usr/share/common-lisp/source/cl-ppcre/optimize.fas 
/u/home/.cache/common-lisp/clisp-2.48-unix-x86/usr/share/common-lisp/source/cl-ppcre/packages.fas 
/u/home/.cache/common-lisp/clisp-2.48-unix-x86/usr/share/common-lisp/source/cl-ppcre/parser.fas 
/u/home/.cache/common-lisp/clisp-2.48-unix-x86/usr/share/common-lisp/source/cl-ppcre/regex-class-util.fas 
/u/home/.cache/common-lisp/clisp-2.48-unix-x86/usr/share/common-lisp/source/cl-ppcre/regex-class.fas 
/u/home/.cache/common-lisp/clisp-2.48-unix-x86/usr/share/common-lisp/source/cl-ppcre/repetition-closures.fas 
/u/home/.cache/common-lisp/clisp-2.48-unix-x86/usr/share/common-lisp/source/cl-ppcre/scanner.fas 
/u/home/.cache/common-lisp/clisp-2.48-unix-x86/usr/share/common-lisp/source/cl-ppcre/specials.fas 
/u/home/.cache/common-lisp/clisp-2.48-unix-x86/usr/share/common-lisp/source/cl-ppcre/util.fas 
/u/home/clisp/ercpp/compiling-program/cl-ppcre-test.asd 
/usr/share/common-lisp/source/aima/cl-ppcre-test.asd 
/usr/share/common-lisp/source/alexandria/cl-ppcre-test.asd 
/usr/share/common-lisp/source/arnesi/cl-ppcre-test.asd 
/usr/share/common-lisp/source/arnesi/src/cl-ppcre-extras.lisp 
/usr/share/common-lisp/source/aspectl/cl-ppcre-test.asd 
/usr/share/common-lisp/source/babel/cl-ppcre-test.asd 
/usr/share/common-lisp/source/binary-types/cl-ppcre-test.asd 
/usr/share/common-lisp/source/blowfish/cl-ppcre-test.asd 
/usr/share/common-lisp/source/cedilla/cl-ppcre-test.asd 
/usr/share/common-lisp/source/cl-acl-compat/cl-ppcre-test.asd 
/usr/share/common-lisp/source/cl-asdf/cl-ppcre-test.asd 
/usr/share/common-lisp/source/cl-cffi/cl-ppcre-test.asd 
/usr/share/common-lisp/source/cl-fad/cl-ppcre-test.asd 
/usr/share/common-lisp/source/cl-interpol/cl-ppcre-test.asd 
/usr/share/common-lisp/source/cl-jpeg/cl-ppcre-test.asd 
/usr/share/common-lisp/source/cl-launch/cl-ppcre-test.asd 
/usr/share/common-lisp/source/cl-menusystem/cl-ppcre-test.asd 
/usr/share/common-lisp/source/cl-pdf/cl-ppcre-test.asd 
/usr/share/common-lisp/source/cl-photo/cl-ppcre-test.asd 
/usr/share/common-lisp/source/cl-plplot/cl-ppcre-test.asd 
/usr/share/common-lisp/source/cl-port/cl-ppcre-test.asd 
/usr/share/common-lisp/source/cl-ppcre 
/usr/share/common-lisp/source/cl-ppcre/. 
/usr/share/common-lisp/source/cl-ppcre/api.fas 
/usr/share/common-lisp/source/cl-ppcre/api.lisp 
/usr/share/common-lisp/source/cl-ppcre/charmap.fas 
/usr/share/common-lisp/source/cl-ppcre/charmap.lisp 
/usr/share/common-lisp/source/cl-ppcre/charset.fas 
/usr/share/common-lisp/source/cl-ppcre/charset.lisp 
/usr/share/common-lisp/source/cl-ppcre/chartest.fas 
/usr/share/common-lisp/source/cl-ppcre/chartest.lisp 
/usr/share/common-lisp/source/cl-ppcre/cl-ppcre-test.asd 
/usr/share/common-lisp/source/cl-ppcre/cl-ppcre-unicode.asd 
/usr/share/common-lisp/source/cl-ppcre/cl-ppcre.asd 
/usr/share/common-lisp/source/cl-ppcre/closures.fas 
/usr/share/common-lisp/source/cl-ppcre/closures.lisp 
/usr/share/common-lisp/source/cl-ppcre/convert.fas 
/usr/share/common-lisp/source/cl-ppcre/convert.lisp 
/usr/share/common-lisp/source/cl-ppcre/errors.fas 
/usr/share/common-lisp/source/cl-ppcre/errors.lisp 
/usr/share/common-lisp/source/cl-ppcre/lexer.fas 
/usr/share/common-lisp/source/cl-ppcre/lexer.lisp 
/usr/share/common-lisp/source/cl-ppcre/optimize.fas 
/usr/share/common-lisp/source/cl-ppcre/optimize.lisp 
/usr/share/common-lisp/source/cl-ppcre/packages.fas 
/usr/share/common-lisp/source/cl-ppcre/packages.lisp 
/usr/share/common-lisp/source/cl-ppcre/parser.fas 
/usr/share/common-lisp/source/cl-ppcre/parser.lisp 
/usr/share/common-lisp/source/cl-ppcre/regex-class-util.fas 
/usr/share/common-lisp/source/cl-ppcre/regex-class-util.lisp 
/usr/share/common-lisp/source/cl-ppcre/regex-class.fas 
/usr/share/common-lisp/source/cl-ppcre/regex-class.lisp 
/usr/share/common-lisp/source/cl-ppcre/repetition-closures.fas 
/usr/share/common-lisp/source/cl-ppcre/repetition-closures.lisp 
/usr/share/common-lisp/source/cl-ppcre/scanner.fas 
/usr/share/common-lisp/source/cl-ppcre/scanner.lisp 
/usr/share/common-lisp/source/cl-ppcre/specials.fas 
/usr/share/common-lisp/source/cl-ppcre/specials.lisp 
/usr/share/common-lisp/source/cl-ppcre/util.fas 
/usr/share/common-lisp/source/cl-ppcre/util.lisp 
/usr/share/common-lisp/source/cl-salza/cl-ppcre-test.asd 
/usr/share/common-lisp/source/cl-split-sequence/cl-ppcre-test.asd 
/usr/share/common-lisp/source/cl-statistics/cl-ppcre-test.asd 
/usr/share/common-lisp/source/cl-utilities/cl-ppcre-test.asd 
/usr/share/common-lisp/source/cl-who/cl-ppcre-test.asd 
/usr/share/common-lisp/source/closer-mop/cl-ppcre-test.asd 
/usr/share/common-lisp/source/contextl/cl-ppcre-test.asd 
/usr/share/common-lisp/source/csv/cl-ppcre-test.asd 
/usr/share/common-lisp/source/fiveam/cl-ppcre-test.asd 
/usr/share/common-lisp/source/ftp/cl-ppcre-test.asd 
/usr/share/common-lisp/source/getopt/cl-ppcre-test.asd 
/usr/share/common-lisp/source/infix/cl-ppcre-test.asd 
/usr/share/common-lisp/source/inflate/cl-ppcre-test.asd 
/usr/share/common-lisp/source/ironclad/cl-ppcre-test.asd 
/usr/share/common-lisp/source/iterate/cl-ppcre-test.asd 
/usr/share/common-lisp/source/kmrcl-tests/cl-ppcre-test.asd 
/usr/share/common-lisp/source/kmrcl/cl-ppcre-test.asd 
/usr/share/common-lisp/source/lexer/cl-ppcre-test.asd 
/usr/share/common-lisp/source/lw-compat/cl-ppcre-test.asd 
/usr/share/common-lisp/source/md5/cl-ppcre-test.asd 
/usr/share/common-lisp/source/metering/cl-ppcre-test.asd 
/usr/share/common-lisp/source/net-telent-date/cl-ppcre-test.asd 
/usr/share/common-lisp/source/onlisp/cl-ppcre-test.asd 
/usr/share/common-lisp/source/pipes/cl-ppcre-test.asd 
/usr/share/common-lisp/source/png/cl-ppcre-test.asd 
/usr/share/common-lisp/source/ptester/cl-ppcre-test.asd 
/usr/share/common-lisp/source/puri/cl-ppcre-test.asd 
/usr/share/common-lisp/source/qbook/cl-ppcre-test.asd 
/usr/share/common-lisp/source/readline/cl-ppcre-test.asd 
/usr/share/common-lisp/source/regex/cl-ppcre-test.asd 
/usr/share/common-lisp/source/reversi/cl-ppcre-test.asd 
/usr/share/common-lisp/source/rsm-bitcomp/cl-ppcre-test.asd 
/usr/share/common-lisp/source/rsm-bool-comp/cl-ppcre-test.asd 
/usr/share/common-lisp/source/rsm-cache/cl-ppcre-test.asd 
/usr/share/common-lisp/source/rsm-delayed/cl-ppcre-test.asd 
/usr/share/common-lisp/source/rsm-filter/cl-ppcre-test.asd 
/usr/share/common-lisp/source/rsm-fuzzy/cl-ppcre-test.asd 
/usr/share/common-lisp/source/rsm-mod/cl-ppcre-test.asd 
/usr/share/common-lisp/source/rsm-modal/cl-ppcre-test.asd 
/usr/share/common-lisp/source/rsm-queue/cl-ppcre-test.asd 
/usr/share/common-lisp/source/rsm-rand/cl-ppcre-test.asd 
/usr/share/common-lisp/source/rsm-random/cl-ppcre-test.asd 
/usr/share/common-lisp/source/rsm-rsa/cl-ppcre-test.asd 
/usr/share/common-lisp/source/rsm-string/cl-ppcre-test.asd 
/usr/share/common-lisp/source/rt/cl-ppcre-test.asd 
/usr/share/common-lisp/source/series/cl-ppcre-test.asd 
/usr/share/common-lisp/source/slime/cl-ppcre-test.asd 
/usr/share/common-lisp/source/trivial-features/cl-ppcre-test.asd 
/usr/share/common-lisp/source/uffi-tests/cl-ppcre-test.asd 
/usr/share/common-lisp/source/uffi/cl-ppcre-test.asd 
/usr/share/common-lisp/source/units/cl-ppcre-test.asd 
/usr/share/common-lisp/source/url-rewrite/cl-ppcre-test.asd 
/usr/share/common-lisp/source/usocket/cl-ppcre-test.asd 
/usr/share/common-lisp/source/usocket/test/cl-ppcre-test.asd 
/usr/share/common-lisp/source/yacc/cl-ppcre-test.asd 
/usr/share/common-lisp/source/yaclml/cl-ppcre-test.asd 
/usr/share/common-lisp/systems/cl-ppcre-test.asd 
/usr/share/common-lisp/systems/cl-ppcre.asd 

तो मैं क्या करूँ:

strace -o strace.1 clisp -q a3.lisp 
grep pcre strace.1  \ 
    | sed -e 's/^[^"]*"//' \ 
    | sed -e 's/".*$//' \ 
    | sort     \ 
    | uniq     \ 
    > strace.2 

मैं इस उत्पादन मिल गया?

उत्तर

11

आप जो की तरह (cl-ppcre:bar ...) तो आप यह सुनिश्चित करें कि पैकेज मौजूद है जरूरत है एक पैकेज का उपयोग करता है कुछ फ़ाइल संकलन है।

(asdf:load-system :cl-ppcre) की तरह एक बयान संकलन संकलन समय पर सिस्टम लोड हो रहा है कारण नहीं है। इस प्रकार पैकेज परिभाषा भी लोड और निष्पादित नहीं है। संकलक इस कथन के लिए कोड उत्पन्न करता है, ताकि यह केवल लोड-टाइम पर निष्पादित हो।

या तो आप प्रणाली किसी तरह लोड इससे पहले कि आप फ़ाइल संकलन या आप फ़ाइल में

(eval-when (:compile-toplevel :load-toplevel :execute) 
    (asdf:load-system :cl-ppcre)) 

का उपयोग सुनिश्चित करें कि यह संकलन समय वातावरण में भरी हुई है बनाने के लिए।

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

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