Я пытаюсь создать исполняемый файл в ракетке, который динамически связан. В настоящее время моя программа hello world компилируется в исполняемый файл размером 4 МБ. Вот оно:
#!/usr/bin/env racket
#lang racket
(define (extract str)
(substring str 4 7))
(print (extract "the cat out of the bag"))
Я скомпилирую, используя
raco exe first.rkt
И полученный исполняемый файл имеет размер 4+ МБ. Итак, очевидно, что он статически связывает рэкетные библиотеки.
- РЕДАКТИРОВАТЬ ---
Вот код запуска:
#lang racket
(require launcher/launcher)
(require racket/runtime-path)
(define-runtime-path prog-path "first.rkt")
(make-racket-launcher (list (path->string prog-path))
"first"
'())
Это просто нужно поместить в отдельный файл и выполнить с
racket <launch-file>.rkt