作者chuinzong (阿榮)
看板C_and_CPP
標題[問題] Makefile入門使用在linux環境
時間Fri May 24 10:55:44 2019
開發平台(Platform): (Ex: Win10, Linux, ...)
Linux Ubuntu 16.04
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
Terminal & QT
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
廠商相機驅動程式
問題(Question):
目前拿到廠商提供的相機資料,欲執行範例程式,想要問兩個問題
檔案包如圖
https://imgur.com/a/ZD6EgUe
(1)在Terminal中,要下何種指令,可以執行Makefile程式去執行
測試Make指令也失敗
(2)在QT要使用,怎麼確認Makefile檔案,
是.h跟.so檔案,是要將所有LIB路徑都包括
還是要怎測試
餵入的資料(Input):
nvidia@tegra-ubuntu:/usr/src/spinnaker/src/Acquisition$ make
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
mkdir: cannot create directory 'obj/build' Permission denied
Makefile:55: recipe for target '.obj/build/Acquisition.o' failed
make: *** [.obj/build/Acquisition.o] Error 1
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
Makefile
################################################################################
# Acquisition Makefile
################################################################################
PROJECT_ROOT=../../
OPT_INC = ${PROJECT_ROOT}/common/make/common_spin.mk
-include ${OPT_INC}
################################################################################
# Key paths and settings
################################################################################
CFLAGS += -std=c++11
ifeq ($(wildcard ${OPT_INC}),)
CXX = g++ ${CFLAGS}
ODIR = .obj/build${D}
SDIR = .
MKDIR = mkdir -p
PLATFORM = $(shell uname)
ifeq ($(PLATFORM),Darwin)
OS = mac
endif
endif
OUTPUTNAME = Acquisition${D}
OUTDIR = ../../bin
################################################################################
# Dependencies
################################################################################
# Spinnaker deps
SPINNAKER_LIB = -L../../lib -lSpinnaker${D} ${SPIN_DEPS}
################################################################################
# Master inc/lib/obj/dep settings
################################################################################
_OBJ = Acquisition.o
OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))
INC = -I../../include -I/usr/include/spinnaker
ifneq ($(OS),mac)
LIB += -Wl,-Bdynamic ${SPINNAKER_LIB}
LIB += -Wl,-rpath-link=../../lib
else
LIB += -rpath ../../lib/
LIB += ${SPINNAKER_LIB}
endif
################################################################################
# Rules/recipes
################################################################################
# Final binary
${OUTPUTNAME}: ${OBJ}
${CXX} -o ${OUTPUTNAME} ${OBJ} ${LIB}
mv ${OUTPUTNAME} ${OUTDIR}
# Intermediate object files
${OBJ}: ${ODIR}/%.o : ${SDIR}/%.cpp
@${MKDIR} ${ODIR}
${CXX} ${CFLAGS} ${INC} -Wall -D LINUX -c $< -o $@
# Clean up intermediate objects
clean_obj:
rm -f ${OBJ}
@echo "intermediate objects cleaned up!"
# Clean up everything.
clean: clean_obj
rm -f ${OUTDIR}/${OUTPUTNAME}
@echo "all cleaned up!"
補充說明(Supplement):
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.117.38.5
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1558666546.A.705.html
推 LPH66: make 指令失敗的訊息是?注意這指令是全小寫 05/24 11:42
→ LPH66: 噢,看到錯誤訊息了。這是無法建立 obj/build目錄 05/24 11:43
→ LPH66: 檢查 obj 或其所在目錄的權限 05/24 11:44
推 achicn3: 下sudo看看? 05/24 13:04
→ chuinzong: 有,下sudo就可以了 05/24 14:24
推 jack82822005: sudo不是萬靈丹,研究一下權限吧~ 05/26 21:44
→ Killercat: 下了sudo 以後你什麼都得sudo 別亂下比較好 XD 05/29 00:00
推 chengcti: chmod directory 05/29 15:25