[英]ocamlbuild produces a blank archive file rather than an executable
在基於 Debian 的 Linux 發行版(PopOS)上工作,我有一個文件文件夾和一個 Makefile 包含
MODULES=move score main draw setup
OBJECTS=$(MODULES:=.cmo)
TEST=test.byte
OCAMLBUILD=ocamlbuild -use-ocamlfind
MAIN=main.byte
# Recipes
default: build #first build (dependies) then run utop (command)
utop
build:
$(OCAMLBUILD) $(OBJECTS)
test:
$(OCAMLBUILD) -tag 'debug' $(TEST) && ./$(TEST)
play:
$(OCAMLBUILD) $(MAIN) && ./$(MAIN)
clean:
ocamlbuild -clean
當我調用make build
時,它似乎工作得很好,但是生成的.byte
文件沒有運行。 在終端中,它們以紅色顯示,這表明計算機將它們理解為存檔文件而不是可執行文件。 當我嘗試運行./main.byte
時,它說即使該文件已在目錄中列出,也無法找到該文件。
此外,當我在 Mac 上構建它時,它工作得很好。 它構建程序並正確運行它。
關於這可能是什么的任何想法?
我不完全確定為什么這適用於 Mac 而不是我的 Linux 機器,但我確實設法使用它來獲得解決方案。 如果我將 Makefile 更改為
MODULES=move score main draw setup
OBJECTS=$(MODULES:=.cmo)
TEST=test.byte
OCAMLBUILD=ocamlbuild -use-ocamlfind
MAIN=main.byte
default: build
utop
build:
$(OCAMLBUILD) $(OBJECTS) $(MAIN)
test:
$(OCAMLBUILD) -tag 'debug' $(TEST) && ./$(TEST)
play:
$(OCAMLBUILD) $(MAIN) && ./$(MAIN)
clean:
ocamlbuild -clean
然后計算機識別可執行文件。
在您原來的 Makefile 中, make build
不會運行應該創建字節碼可執行文件的命令ocamlbuild $(MAIN)
。 您必須運行make play
才能構建字節碼可執行文件。 在修改后的 Makefile 中,您在build
Makefile 目標中將$(MAIN)
包含在傳遞給 ocamlbuild 的目標列表中,因此現在它由make build
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.