2016-08-14 5 views
0

을 정적으로 컴파일하여을 치킨 후 치킨 스킴 프로그램을 연결하면이 한 알이 나에게 약간의 문제를 일으키고 있습니다. 동일한 오류가 발생하지만 더 많은 정보가 있으면 repl에서 시도해보십시오. 그래서 여기에 간다 :Chicken Scheme egg "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)에 12MAGIC-LIMIT 교체 :

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

문제의 원인이 MAGIC-LIMIT 상수는 한 번만 사용하는 것, 그리고 그것은 ... 값이 조회-table.setup에 정의되어 행운입니다!

+0

소스를 실제로 변경하지 않고 작업해야 할 필요가 있습니다. 아마도 컴파일 할 때 lookup-table.setup에서'csc'에'opts'를 넘겨 주면 될까요? 그것은 충분할지도 모른다. 왜 그들은 막연한 소스에서'MAGIC-LIMIT'을 정의 할 수 없었는지, 나는 잘 모른다. –

+0

2009 년부터 저자가이 달걀을 만지지 않은 것 같습니다 ... 왜 소스를 변경하고 싶지 않다는 것입니다. 컴파일 프로세스를 자동으로 유지 하시겠습니까? – dercz

+0

csc -unit 조회 테이블 -emit-import-library 조회 테이블 -prelude "\"(define-constant MAGIC-LIMIT 12) \ ""-cJ lookup-table.scm이 작동하는 것 같습니다 ... – dercz

1

특정 달걀에 단순한 버그처럼 보입니다. 이 문제를 해결하려면 버그 보고서를 제출하는 것이 좋습니다. 가장 일반적인 방법은 버그 추적기 (이 경우 아마도 bugs.call-cc.org)를 사용하고 계란 작성자에게 전자 메일을 보내거나 chicken-users 메일 링리스트를 사용하는 것입니다.

추신 : chicken-users과 관련하여 일반적으로 Stack Overflow보다 질문에 대한 답변을 얻는 것이 더 나을 것입니다.