为什么需要使用sudo来制作全部内容?

时间:2019-10-02 12:28:45

标签: makefile

我正在使用hzeller的LED库,这是我发现的make文件之一:

CXXFLAGS=-Wall -O3 -g -Wextra -Wno-unused-parameter
OBJECTS=MP_Display.o
BINARIES=MP_Display

# RGB_LIB_DISTRIBUTION, this is where the library is checked out.
RGB_LIB_DISTRIBUTION=rpi-rgb-led-matrix
RGB_INCDIR=$(RGB_LIB_DISTRIBUTION)/include
RGB_LIBDIR=$(RGB_LIB_DISTRIBUTION)/lib
RGB_LIBRARY_NAME=rgbmatrix
RGB_LIBRARY=$(RGB_LIBDIR)/lib$(RGB_LIBRARY_NAME).a
LDFLAGS+=-L$(RGB_LIBDIR) -l$(RGB_LIBRARY_NAME) -lrt -lm -lpthread -lcurl

all : $(BINARIES)

$(RGB_LIBRARY): FORCE
    $(MAKE) -C $(RGB_LIBDIR)

Metrici_MP_Display: Metrici_MP_Display.o  $(RGB_LIBRARY)
    $(CXX) $(CXXFLAGS) Metrici_MP_Display.o -o $@ $(LDFLAGS) $(MAGICK_LDFLAGS)

%.o : %.cc
    $(CXX) -I$(RGB_INCDIR) $(CXXFLAGS) -c -o $@ $<

Metrici_MP_Display.o : Metrici_MP_Display.cc
    $(CXX) -I$(RGB_INCDIR) $(CXXFLAGS) $(MAGICK_CXXFLAGS) -c -o $@ $<

clean:
    rm -f $(OBJECTS) $(BINARIES) $(OPTIONAL_OBJECTS) $(OPTIONAL_BINARIES)

FORCE:
.PHONY: FORCE

为什么我需要使用sudo make all而不是make all来编译代码?

我希望生成的文件不归root所有。

1 个答案:

答案 0 :(得分:1)

可能是因为您曾经以sudo make ...的身份运行过它,并且它创建了一些属于root的文件和目录。现在,没有sudo,您将无法覆盖或删除它们。

在项目目录中运行sudo chown --recursive <your user>.<your group> *