Ubuntu 10.04下TinyOS无法编译的问题
时间:2011-02-19 来源:Homme Mistérieux
症状如下,在终端内输入编译命令“make telosb”,直接给我甩回来一长串的syntax error,自带的例程怎么还可能有语法错误?!错误信息的前两行是
mkdir -p build/telosb compiling BlinkAppC to a telosb binary ncc -o build/telosb/main.exe -Os -O -mdisable-hwmul -fnesc-separator=__ -Wall -Wshadow -Wnesc-all -target=telosb -fnesc-cfile=build/telosb/app.c -board= -DDEFINED_TOS_AM_GROUP=0x22 -DIDENT_APPNAME=\"BlinkAppC\" -DIDENT_USERNAME=\"shouyanbo\" -DIDENT_HOSTNAME=\"yanbo-thinkpad\" -DIDENT_USERHASH=0x38722225L -DIDENT_TIMESTAMP=0x4d5e9b04L -DIDENT_UIDHASH=0xd22d1fe1L BlinkAppC.nc -lm /usr/lib/ncc/deputy_nodeputy.h:4:20: error: stddef.h: No such file or directory /usr/lib/ncc/nesc_nx.h:14:26: error: sys/inttypes.h: No such file or directory
然后接下去还有一长串的语法错误信息:
/usr/lib/ncc/nesc_nx.h:235: syntax error before `__nesc_ntoh_uint8' /usr/lib/ncc/nesc_nx.h:240: syntax error before `__nesc_hton_uint8' /usr/lib/ncc/nesc_nx.h:242: warning: type defaults to `int' in declaration of `base' /usr/lib/ncc/nesc_nx.h:242: `value' undeclared here (not in a function) /usr/lib/ncc/nesc_nx.h:242: warning: data definition has no type or storage class /usr/lib/ncc/nesc_nx.h:243: syntax error before `return' /usr/lib/ncc/nesc_nx.h:246: syntax error before `__nesc_ntoh_leuint8' /usr/lib/ncc/nesc_nx.h:251: syntax error before `__nesc_hton_leuint8' /usr/lib/ncc/nesc_nx.h:253: warning: type defaults to `int' in declaration of `base' /usr/lib/ncc/nesc_nx.h:253: redefinition of `base' /usr/lib/ncc/nesc_nx.h:242: previous declaration of `base' /usr/lib/ncc/nesc_nx.h:253: `value' undeclared here (not in a function) /usr/lib/ncc/nesc_nx.h:253: warning: data definition has no type or storage class /usr/lib/ncc/nesc_nx.h:254: syntax error before `return' /usr/lib/ncc/nesc_nx.h:257: syntax error before `__nesc_ntoh_int8' /usr/lib/ncc/nesc_nx.h:257: syntax error before `__nesc_hton_int8' /usr/lib/ncc/nesc_nx.h:257: syntax error before `__nesc_ntoh_leint8' /usr/lib/ncc/nesc_nx.h:257: syntax error before `__nesc_hton_leint8' /usr/lib/ncc/nesc_nx.h:258: syntax error before `__nesc_bf_decode8' etc.
而且问题好像是针对Telob的,编译micaz一点问题没有,“make micaz”运行地好好的。
Google了好一阵子终于找到了解决方法。打开文件/opt/tinyos-2.1.1/support/make/msp/msp.rules,在
OBJCOPY = msp430-objcopy OBJDUMP = msp430-objdump
两行前加入
CFLAGS += -I/usr/msp430/include CFLAGS += -I/usr/lib/gcc-lib/msp430/3.2.3/include
保存、退出,问题解决。
按照原帖子作者自己的说法是,这是个“偏方”,具体是什么原因造成这个问题的,有没有更“漂亮”的办法来解决它,不知道。说白了就是凑活着用。想想也是,我们是用TinyOS,这种问题就留给TinyOS的开发人员吧。
现在已经把Ubuntu的自动更新禁用了,以后就手动给需要的软件升级了,不瞎升了,系统稳定最重要。
相关阅读 更多 +