linux Makefile文件make时出现的问题
我先把代码写出来是自己改的但是make一直报错我的程序本身没有问题下面是报错原因:arm-linux-gcc-nostdinc-I/home/iot/smart210/I...
我先把代码写出来 是自己改的 但是make一直报错 我的程序本身没有问题
下面是报错原因:
arm-linux-gcc -nostdinc -I/home/iot/smart210/Inttest/include -Wall -O2 -fno-builtin -c -o /home/iot/smart210/Inttest/OBJS/start.o start.S
arm-linux-gcc -nostdinc -I/home/iot/smart210/Inttest/include -Wall -O2 -fno-builtin -c -o /main.o main.c
Assembler messages:
Fatal error: can't create /main.o: Permission denied
make: *** [main.o] 错误 1
我的意图是建立一个OBJS的文件夹 用于存放所有编译后的文件
Makefile具体实现如下:
CC = arm-linux-gcc
LD = arm-linux-ld
AR = arm-linux-ar
OBJCOPY = arm-linux-objcopy
OBJDUMP = arm-linux-objdump
OBJSDIR = $(shell pwd)/OBJS
INCLUDEDIR := $(shell pwd)/include
CFLAGS := -Wall -O2 -fno-builtin
CPPFLAGS := -nostdinc -I$(INCLUDEDIR)
export CC AR LD OBJCOPY OBJDUMP OBJSDIR INCLUDEDIR CFLAGS CPPFLAGS
objs := start.o main.o uart.o int.o clock.o lib/libc.a
int.bin: $(OBJSDIR)/$(objs)
$(LD) -Tint.lds $(OBJSDIR)/*.o -o $(OBJSDIR)/int.elf
$(OBJCOPY) -O binary $(OBJSDIR)/int.elf $(OBJSDIR)/$@
${OBJDUMP} -D int.elf > int.dis
.PHONY : lib/libc.a
lib/libc.a:
cd lib; make; cd ..
%.o:%.c
${CC} $(CPPFLAGS) $(CFLAGS) -c -o $(OBJJSDIR)/$@ $<
%.o:%.S
${CC} $(CPPFLAGS) $(CFLAGS) -c -o $(OBJSDIR)/$@ $<
$(OBJSDIR):
mkdir -p ./$@
clean:
make clean -C lib
-$(RM) $(OBJSDIR)/*.bin *.elf *.dis *.o
求大神指点 分数略少却已是倾囊了 聊表心意 万分感谢! 展开
下面是报错原因:
arm-linux-gcc -nostdinc -I/home/iot/smart210/Inttest/include -Wall -O2 -fno-builtin -c -o /home/iot/smart210/Inttest/OBJS/start.o start.S
arm-linux-gcc -nostdinc -I/home/iot/smart210/Inttest/include -Wall -O2 -fno-builtin -c -o /main.o main.c
Assembler messages:
Fatal error: can't create /main.o: Permission denied
make: *** [main.o] 错误 1
我的意图是建立一个OBJS的文件夹 用于存放所有编译后的文件
Makefile具体实现如下:
CC = arm-linux-gcc
LD = arm-linux-ld
AR = arm-linux-ar
OBJCOPY = arm-linux-objcopy
OBJDUMP = arm-linux-objdump
OBJSDIR = $(shell pwd)/OBJS
INCLUDEDIR := $(shell pwd)/include
CFLAGS := -Wall -O2 -fno-builtin
CPPFLAGS := -nostdinc -I$(INCLUDEDIR)
export CC AR LD OBJCOPY OBJDUMP OBJSDIR INCLUDEDIR CFLAGS CPPFLAGS
objs := start.o main.o uart.o int.o clock.o lib/libc.a
int.bin: $(OBJSDIR)/$(objs)
$(LD) -Tint.lds $(OBJSDIR)/*.o -o $(OBJSDIR)/int.elf
$(OBJCOPY) -O binary $(OBJSDIR)/int.elf $(OBJSDIR)/$@
${OBJDUMP} -D int.elf > int.dis
.PHONY : lib/libc.a
lib/libc.a:
cd lib; make; cd ..
%.o:%.c
${CC} $(CPPFLAGS) $(CFLAGS) -c -o $(OBJJSDIR)/$@ $<
%.o:%.S
${CC} $(CPPFLAGS) $(CFLAGS) -c -o $(OBJSDIR)/$@ $<
$(OBJSDIR):
mkdir -p ./$@
clean:
make clean -C lib
-$(RM) $(OBJSDIR)/*.bin *.elf *.dis *.o
求大神指点 分数略少却已是倾囊了 聊表心意 万分感谢! 展开
1个回答
2015-12-13
展开全部
“Permission denied”意为“授权失败”,可能是目标文件夹不存在或只读,或目标文件已存在且只读,或目标位置错误
根据提示,你的main.o是在/创建的
根据提示,你的main.o是在/创建的
更多追问追答
追问
那为什么start.o 成功写进去了
ls -ahl 以后显示我的文件夹是可写的
追答
因为start.o是写入到了/home/iot/smart210/Inttest/OBJS/文件夹下,这个文件夹是可写的。
而/对普通用户默认是只读的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询