我只使用VIM和Makefile在Debian中尝试用SDCC编译以下代码:
void main(void) {
}是的,就这么简单,还没起作用。我用的是这样的Makefile:
# GNU/Linux specific Make directives.
# Declare tools.
SHELL = /bin/sh
CC = sdcc
LD = gplink
ECHO = @echo
MCU = 16f88
ARCH = pic14
CFLAGS = -m$(ARCH) -p$(MCU)
LDFLAGS = -c -r -w -m I /usr/share/sdcc/lib/$(ARCH)/
EXECUTABLE = t1
SOURCES = test2.c
OBJECTS = $(SOURCES:.c=.o)
CLEANFILES = test2.o test2.asm test2.map test2.lst
.SUFFIXES: .c .o
.PHONY: clean
# Compile
all: $(EXECUTABLE)
.c.o:
$(AT) $(CC) $(CFLAGS) -o $*.o -c $<
$(EXECUTABLE): $(OBJECTS)
$(AT) $(LD) $(LDFLAGS) $(OBJECTS) -o $(EXECUTABLE)
clean:
$(AT) rm -rf $(CLEANFILES)在所有这些之后,运行makefile之后的输出是:
sdcc -mpic14 -p16f88 -o test2.o -c test2.c
gplink -c -r -w -m I /usr/share/sdcc/lib/pic14/ test2.o -o t1
make: *** [t1] Segmentation fault我尝试过更复杂的代码,结果是一样的,我看不出出了什么问题,有人吗?
发布于 2014-09-29 16:56:37
我看到有几件事会给你带来麻烦:
--use-non-free,因为某些PIC头文件有一个特殊的微芯片许可证,它与GPL不兼容。此外,如果您从存储库中安装了SDCC,则由于Debian的自由策略,--use-non-free可能无法在Debian上使用。您需要从官方网站安装最新的SDCC。sdcc -mpic14 -p16f88 --use-non-free -V test2.c。通过这种方式,SDCC自动链接,使用-V (详细),您可以看到对汇编程序和链接器的调用,并可以看到在链接上添加的库。https://stackoverflow.com/questions/25772837
复制相似问题