首页 > 解决方案 > 为什么我需要`sudo` 来`make all`?

问题描述

我正在使用 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。

标签: makefile

解决方案


可能是因为您已经运行过sudo make ...一次,并且它创建了一些属于root. 现在你既不能覆盖也不能删除它们sudo

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


推荐阅读