首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能用SDCC在debian上为pic编译简单代码

不能用SDCC在debian上为pic编译简单代码
EN

Stack Overflow用户
提问于 2014-09-10 18:46:36
回答 1查看 1.8K关注 0票数 1

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

代码语言:javascript
复制
void main(void) {

}

是的,就这么简单,还没起作用。我用的是这样的Makefile:

代码语言:javascript
复制
# 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之后的输出是:

代码语言:javascript
复制
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

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

EN

回答 1

Stack Overflow用户

发布于 2014-09-29 16:56:37

我看到有几件事会给你带来麻烦:

  • 当您使用SDCC为PICs编译时,您需要选项--use-non-free,因为某些PIC头文件有一个特殊的微芯片许可证,它与GPL不兼容。此外,如果您从存储库中安装了SDCC,则由于Debian的自由策略,--use-non-free可能无法在Debian上使用。您需要从官方网站安装最新的SDCC。
  • 在链接阶段,您应该包括运行所需的PIC库。尝试执行sdcc -mpic14 -p16f88 --use-non-free -V test2.c。通过这种方式,SDCC自动链接,使用-V (详细),您可以看到对汇编程序和链接器的调用,并可以看到在链接上添加的库。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25772837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档