어떻게 SBCL에서 독립 실행 형 실행 파일을 빌드 할 수 있습니까? 시도했습니다.SBCL : 독립 실행 형 실행 파일 빌드
; SLIME 2.20
CL-USER> (defun hullo()
(format t "hullo"))
HULLO
CL-USER> (sb-ext:save-lisp-and-die "hullo" :toplevel #'hullo :executable t)
다만 다음과 같은 오류가 발생합니다.
Cannot save core with multiple threads running.
Interactive thread (of current session):
#<THREAD "main thread" RUNNING {10019563F3}>
Other threads:
#<THREAD "Swank Sentinel" RUNNING {100329E073}>,
#<THREAD "control-thread" RUNNING {1003423A13}>,
#<THREAD "reader-thread" RUNNING {1003428043}>,
#<THREAD "swank-indentation-cache-thread" RUNNING
{1003428153}>,
#<THREAD "auto-flush-thread" RUNNING {1004047DA3}>,
#<THREAD "repl-thread" RUNNING {1004047FA3}>
[Condition of type SB-IMPL::SAVE-WITH-MULTIPLE-THREADS-ERROR]
내가 뭘 잘못하고 있니?
오류는 여러 스레드가 실행 중임을 나타냅니다. 따라서 여러 스레드를 실행하지 않고도 저장해야합니다. 슬라임이 아닌 repl (예 : 터미널)에서 똑같은 것을 시도하십시오. –
@DanRobertson, 멋지다 작동합니다. 하지만 이것은 실제로 실행 파일을 컴파일하는 유일한 방법입니까? 이상하게 보입니다. – Toothrot
성가시다. 약간 더 쉽게 만들 수있는 몇 가지 방법이 있습니다. 이미지를 저장하는 것은 어려운 문제입니다. 하나는 저장하고 싶은 상태가 많이 있지만 그것에 대해해야할 일은 분명하지 않습니다. 파일을 열려면 어떻게됩니까? 열린 소켓? 현재 작업 디렉토리 또는 명령 행 인수는 어떻게됩니까? 다른 실행중인 스레드에는 어떤 일이 발생해야합니까? 열린 파일이 있고 코어를 저장 한 다음 파일을 이동하는 경우 코어를 복원 할 때 스트림의 상태는 무엇입니까? 파일의 inode가 이동하지 않기 때문에 실행중인 응용 프로그램에서는 문제가되지 않습니다. 연결 해제와 동일합니다. –