User forums > Embedded development
Create and compile Contiki project
Pavel_47:
At the bottom of Makefile there is a line:
CONTIKI = ../..
include $(CONTIKI)/Makefile.include
Here I didn't properly understand what "../.." means - current folder (the folder where is project file) ?
In this case how include $(CONTIKI)/Makefile.include does work - file Makefile.include is situated at the top of Contiki package ?
Nevertheless I'm sure that it does work, so probably "../.." points to the top of Contiki package (that in reality is: C:\Users\Pavel\Documents\Proj_EPFL\contiki-2.7\).
Strange ... it seems that placeholder "../" in windows points to the root directory, i.e. C:, isn't it ?
Anyway here is extract from Makefile.include:
include $(CONTIKI)/core/net/Makefile.uip
And here is contens of C:/Users/Pavel/Documents/Proj_EPFL/contiki-2.7/core/net/Makefile.uip:
--- Code: ---NET = \
dhcpc.c \
hc.c \
nbr-table.c \
netstack.c \
packetbuf.c \
packetqueue.c \
psock.c \
queuebuf.c \
resolv.c \
sicslowpan.c \
simple-udp.c \
tcpdump.c \
tcpip.c \
uaodv-rt.c \
uaodv.c \
uip-debug.c \
uip-ds6-route.c \
uip-ds6-nbr.c \
uip-ds6.c \
uip-fw-drv.c \
uip-fw.c \
uip-icmp6.c \
uip-nd6.c \
uip-neighbor.c \
uip-over-mesh.c \
uip-packetqueue.c \
uip-split.c \
uip-udp-packet.c \
uip.c \
uip6.c \
uip_arp.c \
uiplib.c
--- End code ---
As you can state inside of this list there is file "uip-ds6.c", that contains source code of functions
uip_ds6_set_addr_iid
uip_ds6_addr_add
Call of these functions (in the project source file) result "undefined reference" errors.
Next, I open uip-ds6.c in Code::Blocks and see that all the code is "pale", what probably means that code is ignored by due to #if statement (Am I correct ?).
The most external #if statement is:
#if UIP_CONF_IPV6
Then I go to my source and add the following line (in bold):
#include "contiki.h"
#include "lib/random.h"
#include "sys/ctimer.h"
#include "net/uip.h"
#define UIP_CONF_IPV6
#include "net/uip-ds6.h"
#include "net/uip-udp-packet.h"
#ifdef WITH_COMPOWER
As you can state it's included before #include "net/uip-ds6.h", so "define" should be accepted inside of uip-ds6.c.
But NOT !!!
After compiling there are still the same errors, also the code inside of uip-ds6.c is "pale".
I become crazy with all this staff ...
Pavel_47:
Yesss !!!
Works !
Here is workflow on problem resolution:
At the top of Makefile there is line:
DEFINES+=PROJECT_CONF_H=\"project-conf.h\"
I opened project-conf.h ... and indeed have found UIP_CONF_IPV6 definition:
/* Don't let contiki-default-conf.h decide if we are an IPv6 build */
#ifndef UIP_CONF_IPV6
#define UIP_CONF_IPV6 0
#endif
I've replaced '0' by '1' and rebuilt project.
No errors !!!
But curiously the code inside of uip-ds6.c remains "pale". Why ?
Also, can somebody clarify the issue with "../.." ?
Thanks
Pavel
scarphin:
'../..' means 2 folders up in the path starting from the current folder.
Pavel_47:
Thanks Scarphin
For 3 levels up: ".../..." and for 4 levels up "..../...." ?
Also, can you explain the issue with "pale" code (although not so critical ... just to clarify the properties of Code::Blocks interface).
Cordially
Pavel
P.S. Here is pale look of source
scarphin:
3 levels: '../../..'
4 levels: '../../../..'
Unfortunately these kinds of questions are not related to CB and not allowed in the forum, please do your own research if you think your question is not related to CB. I have no idea about the grey code, might be some misconfiguration.
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version