0
我有(load "foo.import.scm")
當我編譯一切工作,只要我從同一個目錄執行程序。否則,它抱怨不能夠找到 「foo.import.scm」我如何在二進制可執行文件中包含雞模塊
Error: (open-input-file) cannot open file - No such file or directory: "foo.import.scm"
,如果我做
csc -s foo.scm -emit-import-library foo
然後
(import foo)
它編譯罰款,但隨後抱怨
Error: (require) cannot load extension: foo
當從一個不同的目錄
,如果我做
(use foo)
則抱怨
Error: (require) cannot load extension: foo
,當我從一個不同的目錄中運行它。
將此模塊加載到我的程序中的正確方法是什麼,它將包含在可執行文件中?應該通過一個不同的標誌csc
?文檔沒有讓我明白這個解決方案。
項目結構:3個文件在相同的目錄中'main.scm''foo.scm''foo.import.scm' 然後'csc main.scm'我想要生成的可執行文件從其他目錄中工作。我已經嘗試'導入''加載'和'使用'和所有本地工作,但不執行其他目錄時,我執行生成的二進制文件。 – masukomi
有幾種方法可以做到這一點:1)將'foo'安裝爲全局擴展名,以便找到它。 2)使用[部署模式](http://wiki.call-cc.org/man/4/Deployment)將'foo'作爲擴展名安裝到本地目錄中,並將'rpath'設置爲該目錄。 3)使用'-private-repository'來設置'rpath'以匹配它所在的目錄。 4)分別編譯你的程序,並將其作爲單元鏈接在一起(參見[手冊中的多文件示例](http://wiki.call-cc.org/man/4/Using%20the%20compiler#an-例如與 - 多文件))。 – sjamaan