簡體   English   中英

從makefile運行程序

[英]Running a program from a makefile

我從教授那里收到了這個示例makefile,我試圖在Ubuntu上運行它,但是我鍵入的命令無法運行它。 makefile中的所有文件已經存在,當我鍵入make時,它會生成文件,但實際程序無法運行。 我試圖輸入./a.out,但是也不能運行它。 請幫助我輸入要運行該程序的命令。

# Makefile for Library Management System
CXXFLAGS += --std=c++11

all: div main
rebuild: div clean main

debug: CXXFLAGS += -g
debug: rebuild

main: main.o controller.o view.o library.o publication.o
    $(CXX) $(CXXFLAGS) -o lms main.o controller.o view.o library.o publication.o 
main.o: main.cpp *.h
    $(CXX) $(CXXFLAGS) -c main.cpp
controller.o: controller.cpp *.h
    $(CXX) $(CXXFLAGS) -c controller.cpp
test_view: test_view.o controller.o view.o library.o publication.o
    $(CXX) $(CXXFLAGS) -o test_view test_view.o controller.o view.o library.o publication.o 
test_view.o: test_view.cpp view.h publication.h library.h
    $(CXX) $(CXXFLAGS) -c test_view.cpp
test_library: test_library.o library.o publication.o
    $(CXX) $(CXXFLAGS) -o test_library test_library.cpp library.o publication.o
test_library.o: test_library.cpp *.h
    $(CXX) $(CXXFLAGS) -c test_library.cpp
library.o: library.cpp *.h
    $(CXX) $(CXXFLAGS) -c library.cpp
test_publication: test_publication.o publication.o 
    $(CXX) $(CXXFLAGS) -o test_publication test_publication.o publication.o 
test_publication.o: test_publication.cpp *.h
    $(CXX) $(CXXFLAGS) -c test_publication.cpp
publication.o: publication.cpp *.h
    $(CXX) $(CXXFLAGS) -c publication.cpp

clean:
    -rm -f *.o lms test_age test_genre test_media test_publication test_library test_view test_view_actual.txt

div:
    @echo
    @echo 'X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-'
    @echo '-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X'
    @echo 'X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-'
    @echo '-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X'
    @echo

是否有一個名為“ lms”的文件? 嘗試運行:./lms

make文件中'-o'之后的內容指定輸出文件名。 這些是您可以運行的程序。

make的工作是構建程序,而不是運行它,因此makefile可能工作正常。

您可以從以下行看到:

all: div main

默認情況下,makefile將嘗試構建divmain

div的規則只是將內容打印到控制台:

div:
    @echo
    @echo 'X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-'
    @echo '-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X'
    @echo 'X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-'
    @echo '-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X'
    @echo

如另一個答案的注釋中所述, main的規則將標志標記為gcc -o lms因此實際的輸出可執行文件名稱將為lms

您應該真正告訴您的教授,這是錯誤的格式,因為應該使用makefile來構建與規則名稱相同的文件。 (即make main應該建立一個名為main的文件)如果他不同意,請隨意將其指向此處。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM