【问题标题】:Can't compile simple code with SDCC for pic on debian无法在 debian 上使用 SDCC 为 pic 编译简单代码
【发布时间】:2014-09-10 18:46:36
【问题描述】:

我正在尝试使用 SDCC 在 Debian 中仅使用 VIM 和 Makefile 编译以下代码:

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

我尝试了更复杂的代码,结果相同, 我看不出有什么问题,有人吗?

【问题讨论】:

    标签: makefile pic sdcc


    【解决方案1】:

    我发现有几件事可能会导致您出现问题:

    • 当您使用 SDCC 为 PIC 编译时,您需要选项 --use-non-free,因为某些 PIC 头文件具有不兼容 GPL 的特殊 Microchip 许可证。此外,如果您从存储库安装 SDCC,由于其自​​由政策,--use-non-free 在 Debian 上可能不可用。您需要从official website 安装最新的 SDCC。

    • 在链接阶段,您应该包含运行所需的 PIC 库。尝试执行sdcc -mpic14 -p16f88 --use-non-free -V test2.c。这样,SDCC 会自动链接,使用-V(详细),您可以看到对汇编器和链接器的调用,并且可以看到链接时添加的库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-14
      • 2011-06-27
      • 1970-01-01
      • 2015-03-19
      • 2012-04-13
      相关资源
      最近更新 更多