2016-08-14 3 views
0

Я пытаюсь сделать статически компилировать и связать программу Chicken Scheme, и это одно яйцо дает мне некоторые проблемы. Я получаю ту же ошибку, но с дополнительной информацией, когда я пытаюсь ее в repl; так вот:Проблемы с сборкой куриного яйца «lookup-table»

> chicken-install >/dev/null -retrieve lookup-table 
> csi ./lookup-table/lookup-table.scm -I ./lookup-table 

CHICKEN 
(c) 2008-2014, The Chicken Team 
(c) 2000-2007, Felix L. Winkelmann 
Version 4.9.0.1 (stability/4.9.0) (rev 8b3189b) 
linux-unix-gnu-x86-64 [ 64bit manyargs dload ptables ] 
bootstrapped 2014-06-07 

; loading /tmp/tempfabd.10142/lookup-table/lookup-table.scm ... 
; loading /var/lib//chicken/7/chicken.import.so ... 
; including /tmp/tempfabd.10142/lookup-table/lookup-table-body.scm ... 
; loading /var/lib//chicken/7/srfi-1.import.so ... 
; loading /var/lib//chicken/7/srfi-69.import.so ... 
; loading /var/lib//chicken/7/ports.import.so ... 
; loading /var/lib//chicken/7/data-structures.import.so ... 
; loading /var/lib//chicken/7/extras.import.so ... 
; loading /var/lib//chicken/7/miscmacros.import.so ... 
; loading /var/lib//chicken/7/type-checks.import.so ... 
; loading /var/lib//chicken/7/type-errors.import.so ... 
; loading /var/lib//chicken/7/foreign.import.so ... 
; loading /var/lib//chicken/7/record-variants.import.so ... 
; loading /var/lib//chicken/7/miscmacros.so ... 
; loading /var/lib//chicken/7/record-variants.so ... 

Warning: reference to possibly unbound identifier `MAGIC-LIMIT' in: 
Warning: magic-count? 

Error: module unresolved: lookup-table 

      Call history: 

      <syntax>    [dict-print] (##core#let ((port (optional732 tmp735 #f))) (if (not port) (*dict-print dict) (with-output-to-port ...... 
      <syntax>    [dict-print] (##core#begin (##core#if (not port) (*dict-print dict) (with-output-to-port port (lambda() (*dict-p...... 
      <syntax>    [dict-print] (##core#if (not port) (*dict-print dict) (with-output-to-port port (lambda() (*dict-print dict)))) 
      <syntax>    [dict-print] (not port) 
      <syntax>    [dict-print] (*dict-print dict) 
      <syntax>    [dict-print] (with-output-to-port port (lambda() (*dict-print dict))) 
      <syntax>    [dict-print] (lambda() (*dict-print dict)) 
      <syntax>    [dict-print] (##core#lambda() (*dict-print dict)) 
      <syntax>    [dict-print] (##core#begin (*dict-print dict)) 
      <syntax>    [dict-print] (*dict-print dict) 
      <syntax>    [dict-print] (optional732 tmp735 #f) 
      <syntax>    [dict-print] (##core#let ((tmp739 tmp735)) (##core#if (null?740 tmp739) #f (car741 tmp739))) 
      <syntax>    [dict-print] (##core#begin (##core#if (null?740 tmp739) #f (car741 tmp739))) 
      <syntax>    [dict-print] (##core#if (null?740 tmp739) #f (car741 tmp739)) 
      <syntax>    [dict-print] (null?740 tmp739) 
      <syntax>    [dict-print] (car741 tmp739)  <-- 

Все остальные яйца, которые я пробовал, составлены отлично. Может кто-нибудь поможет мне исправить эту проблему, пожалуйста? Это меня останавливает.

ответ

1

Интернет предлагает проблемы с этим яйца, вероятно, это помогает (кажется, работает): (? В определении магии рассчитывать) в перекодировки-табличного-body.scm ~ линии 308 заменить MAGIC-LIMIT с 12:

(define-inline (magic-count? count) (<= count 12 #;MAGIC-LIMIT)) 

Это MAGIC-LIMIT константа вызывает проблему, кажется, используется только один раз, и это значение определено в перекодировки-table.setup ... Удачи!

+0

Мне нужно, чтобы он работал без фактического изменения источников. Возможно, если при компиляции я передаю 'opts' из lookup-table.setup в' csc'? Этого может быть достаточно. Почему они не могли просто определить «MAGIC-LIMIT» в проклятом источнике, я понятия не имею. –

+0

Кажется, автор не касался этого яйца с 2009 года ... Почему вы не хотите менять источники, хотите ли вы автоматизировать процесс компиляции? – dercz

+0

csc -unit lookup-table -emit-import-library lookup-table -prelude "\" (define-constant MAGIC-LIMIT 12) \ "" -cJ lookup-table.scm, похоже, работает ... – dercz

1

Это похоже на простую ошибку в определенном яйце. Если вы хотите, чтобы это исправлено, я бы предложил подать отчет об ошибке. Наиболее распространенные способы сделать это - использовать трекер ошибок (в данном случае, возможно, bugs.call-cc.org), отправить автору яйца по электронной почте или использовать список рассылки chicken-users.

PS: Что касается chicken-users, вам, вероятно, повезло бы получить ответы на ваши вопросы, чем на переполнение стека, в общем.

Смежные вопросы