Pergunta

Dado um programa simples como o seguinte, como você:

  1. compilá-lo como um arquivo de imagem separado para ser carregado pela implementação e quais os argumentos de linha de comando que você usaria para carregá-lo?

  2. compilá-lo como um binário autônomo que pode ser carregado e executado como é.

    Nota: Eu tentei adicionar ": prepend-kernel t". Quando salvar o aplicativo só para ter o erro a seguir jogado

    Error: value NIL is not of the
    expected type REAL. While executing: 
    CCL::<-2, in process Initial(0).
    
  3. Como você suprimir a mensagem de boas-vindas?

    O Programa

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

Editar

O ódio a resposta parte da minha própria pergunta, mas eu achei que não obstante.

Após a função tiver sido carregado tipo a que se segue para compilar:

(ccl:save-application "app")

Isso cria um arquivo de imagem. Para carregá-lo passando-a para o tipo de aplicação (nota: o 'CCL' binário está no meu caminho do sistema);

ccl -I app

Para executar uma função de nível superior passá-lo como um parâmetro

ccl -I app --eval (main)
Foi útil?

Solução

Consulte a documentação Clozure Common Lisp sob Applications Salvando

Compilando e Carregando Lisp arquivos

Você pode compilar um arquivo chamado /foo/bar.lisp chamando

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

Isto irá criar um arquivo fasl (carga rápida), que contém código nativo.

Você pode carregar o arquivo compilado, o arquivo fasl, com o LOAD função. LOAD e COMPILE-FILE são funções padrão Lisp Comum.

aplicações Criando

Algumas definições:

  • CCL do kernel :. A parte da CCL, que proporciona baixo nível de tempos de execução de serviços como gerenciamento de memória
  • Imagem : um despejo salvo do Lisp pilha
  • Aplicação : CCL do kernel + imagem. Isso pode ser em um arquivo.

Você pode salvar uma aplicação chamando uma função CCL específica:

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

Isto irá salvar uma imagem, que você pode executar usando o kernel CCL de um shell de comando:

ccl -I /foo/bar-image

Para salvar um executável que inclui o kernel usar isso a partir de Lisp:

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

Você pode chamar este executável como de costume com /foo/bar-app a partir de um shell de comando.

Em Clozure Common Lisp você pode verificar

*command-line-argument-list*

para a lista de argumentos de linha de comando fornecidas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top