[問題] Makefile入門使用在linux環境

作者: chuinzong (阿榮)   2019-05-24 10:55:44
開發平台(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):
[email protected]:/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 [email protected]
# 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):
作者: LPH66 (-6.2598534e+18f)   2019-05-24 11:42:00
make 指令失敗的訊息是?注意這指令是全小寫噢,看到錯誤訊息了。這是無法建立 obj/build目錄檢查 obj 或其所在目錄的權限
作者: achicn3 (Sher)   2019-05-24 13:04:00
下sudo看看?
作者: chuinzong (阿榮)   2019-05-24 14:24:00
有,下sudo就可以了
作者: jack82822005 (小郭郭)   2019-05-26 21:44:00
sudo不是萬靈丹,研究一下權限吧~
作者: Killercat (殺人貓™)   2019-05-29 00:00:00
下了sudo 以後你什麼都得sudo 別亂下比較好 XD
作者: chengcti (版主請投我一票!)   2019-05-29 15:25:00
chmod directory

Links booklink

Contact Us: admin [ a t ] ucptt.com