문제

다음과 같은 간단한 프로그램이 주어지면 어떻게 :

  1. 구현에 의해로드 될 별도의 이미지 파일로 컴파일하고, 어떤 명령 줄 인수를로드하는 데 어떤 명령 줄 인수를 사용 하시겠습니까?

  2. 로드하고 실행할 수있는 독립형 바이너리로 컴파일하십시오.

    참고 : 다음 오류가 발생하기 위해 응용 프로그램을 저장할 때 ": Prepend-Kernel T"를 추가하려고 시도했습니다.

    Error: value NIL is not of the
    expected type REAL. While executing: 
    CCL::<-2, in process Initial(0).
    
  3. 환영 메시지를 어떻게 억압 하시겠습니까?

    프로그램

    (defun main ()
      (format t "This is the program.")0)
    

편집하다

내 질문의 일부에 대답하는 것을 싫어하지만, 나는 그것을 덜 발견하지 못했습니다.

함수가로드 된 후 다음 유형을 구성하여 다음을 컴파일합니다.

(ccl:save-application "app")

이미지 파일을 만듭니다. 구현 유형에 전달하여로드하려면 (참고 : 'CCL'바이너리는 시스템 경로에 있습니다);

ccl -I app

최상위 기능을 실행하려면 매개 변수로 전달합니다.

ccl -I app --eval (main)
도움이 되었습니까?

해결책

아래의 Clozure Common LISP 문서를 참조하십시오 응용 프로그램 저장

LISP 파일 컴파일 및로드

이름이 지정된 파일을 컴파일 할 수 있습니다 /foo/bar.lisp 전화로

 (compile-file "/foo/bar.lisp")

이것은 a를 만들 것입니다 fasl (빠른로드) 기본 코드가 포함 된 파일.

컴파일 된 파일, FASL 파일을 함수로로드 할 수 있습니다. LOAD. LOAD 그리고 COMPILE-FILE 표준 공통 LISP 기능입니다.

응용 프로그램 작성

몇 가지 정의 :

  • CCL 커널: 메모리 관리와 같은 저수준 런타임 서비스를 제공하는 CCL의 일부.
  • 영상: LISP 힙의 저장된 덤프
  • 신청: CCL 커널 + 이미지. 이것은 하나의 파일에있을 수 있습니다.

CCL 특정 기능을 호출하여 응용 프로그램을 저장할 수 있습니다.

(save-application "/foo/bar-image" :toplevel-function #'main)

이렇게하면 이미지가 저장되어 명령 쉘에서 CCL 커널을 사용하여 실행할 수 있습니다.

ccl -I /foo/bar-image

커널이 포함 된 실행 파일을 저장하려면 LISP에서 이것을 사용하십시오.

(save-application "/foo/bar-app"
                  :toplevel-function #'main
                  :prepend-kernel t)

평소와 같이이 실행 파일을 호출 할 수 있습니다 /foo/bar-app 명령 쉘에서.

Clozure Common LISP에서 확인할 수 있습니다

*command-line-argument-list*

제공된 명령 줄 인수 목록.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top