Sorry Pedro,

I do not understand.

If your Makefile only includes the 3 lines I mentioned above in your
Makefile (e.g:

> COMPONENT=FloodingC
> include $(MAKERULES)
> PFLAGS += path_to_C_source/source.c

... and nothing else)

, then you are only using make default rules, so you are not
specifying either -c or -o rule. Furthermore, there is not any other
file apart of "source.c".

Are you sure that you are not calling any other Makefile?





On Thu, Jan 13, 2011 at 7:23 PM, Pedro Nunes <[email protected]> wrote:
> Hello, Sergio.
> I hadn't done that yet.
> But I tried now just the way you said and my error message remains:
> "gcc: cannot specify -o with -c or -S with multiple files
> make: *** [sim-exe] Error 1"
> Thank you once again for your help! :)
> Best regards,
> Pedro Nunes
> On Thu, Jan 13, 2011 at 5:14 PM, Sergio Valcarcel <[email protected]>
> wrote:
>>
>> I imagined that you probably knew the link :-)
>> But as you wrote LDFLAGS instead of PFLAGS I insisted.
>>
>> Anyway, it is weird... it works fine for me.
>>
>> My guess is that there could be anything wrong with the linker and my
>> five cents would be to only include this 3 lines in the Makefile :
>> > COMPONENT=FloodingC
>> > include $(MAKERULES)
>> > PFLAGS += path_to_C_source/source.c
>>
>> Did you modify your Makefile in such a way? I mean, removing all
>> LDFLAGS and everything else and just keeping this 3 lines, and nothing
>> else?
>>
>>
>>
>>
>>
>>
>> On Thu, Jan 13, 2011 at 5:57 PM, Pedro Nunes <[email protected]> wrote:
>> > Hello Sergio.
>> > First of all, thank you for your help. However, I did also checked that
>> > thread and tried it. It didn't work.
>> > I think I'll just port my C functions to a nesC component.
>> > Thank you anyway.
>> > Regards,
>> > Pedro Nunes
>> >
>> > On Wed, Jan 12, 2011 at 10:30 AM, Sergio Valcarcel
>> > <[email protected]>
>> > wrote:
>> >>
>> >> Hi Pedro,
>> >>
>> >> in another mail-thread there are explained two ways of calling C
>> >> functions from a nesC application. Check this:
>> >>
>> >>
>> >> http://www.mail-archive.com/[email protected]/msg35149.html
>> >>
>> >> The quick & dirty way is embedding the C function into the nesC file.
>> >> I did it and works properly, but since it is not very flexible nor
>> >> scalable I moved to the second option.
>> >>
>> >> The second option means to declare the function in a header file
>> >> "source.h" and to indicate that the "source.c" file must be compiled
>> >> into the Makefile as "PFLAGS+=path/to/source.c".
>> >>
>> >> In your case, I would remove the LDFLAGS and just try this Makefile:
>> >>
>> >> "
>> >> COMPONENT=FloodingC
>> >> include $(MAKERULES)
>> >>
>> >> PFLAGS += path_to_C_source/source.c
>> >> "
>> >>
>> >> I hope it helps!
>> >> Cheers!
>> >> Sergio
>> >>
>> >>
>> >>
>> >>
>> >> On Wed, Jan 12, 2011 at 5:57 AM, Pedro Nunes <[email protected]>
>> >> wrote:
>> >> > Hi all.
>> >> > I'm also trying to use a C function inside my nesC application but
>> >> > there's a
>> >> > problem I can't solve.
>> >> > I edit the Makefile like David said:
>> >> > ------------------
>> >> > COMPONENT=FloodingC
>> >> > include $(MAKERULES)
>> >> > LDFLAGS=/opt/tinyos-2.1.1/tos/system/sha1.o
>> >> > /opt/tinyos-2.1.1/tos/system/sha1.c:
>> >> > /opt/tinyos-2.1.1/tos/system/sha1.h
>> >> > $(CC) -o /opt/tinyos-2.1.1/tos/system/sha1.o
>> >> > /opt/tinyos-2.1.1/tos/system/sha1.c
>> >> > ------------------
>> >> > But whenever I try to build my application I always get this warning:
>> >> > "gcc: /opt/tinyos-2.1.1/tos/system/sha1.o: linker input file unused
>> >> > because
>> >> > linking not done"
>> >> > I know this is happening because when I compiled sha1 I did "gcc -c
>> >> > sha1.c"
>> >> > since sha1.c doesn't have a main function. But that's the purpose of
>> >> > it.
>> >> > I
>> >> > don't want to run it as a stand-alone program. I just want to use it
>> >> > as
>> >> > a
>> >> > library.
>> >> > This warning will later lead me to this when running my simulation:
>> >> > ------------------
>> >> > Traceback (most recent call last):
>> >> >   File "simulation.py", line 3, in <module>
>> >> >     from TOSSIM import *
>> >> >   File ".../Flooding/src/TOSSIM.py", line 7, in <module>
>> >> >     import _TOSSIM
>> >> > ImportError: .../Flooding/src/_TOSSIMmodule.so: undefined symbol:
>> >> > SHA1Input
>> >> > ------------------
>> >> > Does anyone know a way to fix this?
>> >> > Thank you in advance.
>> >> > Regards,
>> >> > Pedro Nunes
>> >> >
>> >> >>OK! now it works, but only in simulation!!!
>> >> >>I tried to edit my makefile but without success!
>> >> >>How can I solve this problem?
>> >> >>Thank you!
>> >> >>2008/1/31, AIGroup <[EMAIL PROTECTED]>:
>> >> >>>
>> >> >>> Hi David,
>> >> >>>
>> >> >>> before all thank you for your help.
>> >> >>> I tried to edit my files as you wrote, but I yet have problems.
>> >> >>> I edited my nesc file as follows:
>> >> >>> -----
>> >> >>> #include "Timer.h"
>> >> >>> #include "Hello.h" //<------ I included the header file here
>> >> >>>
>> >> >>> module BlinkC
>> >> >>> {
>> >> >>>   uses interface Timer<TMilli> as Timer0;
>> >> >>>   uses interface Timer<TMilli> as Timer1;
>> >> >>>   uses interface Timer<TMilli> as Timer2;
>> >> >>>   uses interface Leds;
>> >> >>>   uses interface Boot;
>> >> >>> }
>> >> >>> implementation
>> >> >>> {
>> >> >>>   event void Boot.booted()
>> >> >>>   {
>> >> >>>     call Timer0.startPeriodic( 250 );
>> >> >>>     call Timer1.startPeriodic( 500 );
>> >> >>>     call Timer2.startPeriodic( 1000 );
>> >> >>>   }
>> >> >>>
>> >> >>>   event void Timer0.fired()
>> >> >>>   {
>> >> >>>      Hello();         //<-------------This is the function call to
>> >> >>> Hello()
>> >> >>>      //dbg("BlinkC", "Timer 0 fired @ %s.\n", sim_time_string());
>> >> >>>     //call Leds.led0Toggle();
>> >> >>>   }
>> >> >>>
>> >> >>> --------
>> >> >>> The C files are these:
>> >> >>> -----------
>> >> >>> //Hello.h
>> >> >>> #ifndef HELLO_H
>> >> >>> #define HELLO_H
>> >> >>>
>> >> >>> void Hello();
>> >> >>>
>> >> >>> #endif
>> >> >>> ---------
>> >> >>> #include "Hello.h"
>> >> >>>
>> >> >>> void Hello()
>> >> >>> {
>> >> >>>     printf("\nHELLO!\n");
>> >> >>> }
>> >> >>> -------------
>> >> >>> and my Makefile is the following:
>> >> >>> COMPONENT=BlinkAppC
>> >> >>> LDFLAGS = Hello.o
>> >> >>> Hello.c: Hello.h
>> >> >>>     $(CC) -o Hello.o Hello.c
>> >> >>> include $(MAKERULES)
>> >> >>> ---
>> >> >>> where $(CC)... is "tabbed"
>> >> >>> So, when I run "make micaz sim" this error occurs:
>> >> >>> ---------
>> >> >>> [EMAIL PROTECTED]:/opt/tinyos-2.x/apps/ImportC$ make micaz sim
>> >> >>> mkdir -p build/micaz
>> >> >>>   placing object files in build/micaz
>> >> >>>   writing XML schema to app.xml
>> >> >>>   compiling BlinkAppC to object file sim.o
>> >> >>> ncc -c -shared -fPIC -o build/micaz/sim.o -g -O0 -tossim
>> >> >>> -fnesc-nido-tosnodes=1000 -fnesc-simulate
>> >> >>> -fnesc-nido-motenumber=sim_node\(\)   -finline-limit=100000 -Wall
>> >> >>> -Wshadow
>> >> >>> -Wnesc-all -target=micaz -fnesc-cfile=build/micaz/app.c
>> >> >>> -board=micasb
>> >> >>> -DIDENT_PROGRAM_NAME=\"BlinkAppC\" -DIDENT_USER_ID=\"penguin\"
>> >> >>> -DIDENT_HOSTNAME=\"penguin-laptop\" -DIDENT_USER_HASH=0xdef7cfbeL
>> >> >>> -DIDENT_UNIX_TIME=0x47a18a21L -DIDENT_UID_HASH=0x77ab7dfaL
>> >> >>> -Wno-nesc-data-race BlinkAppC.nc Hello.o  -fnesc-dump=components
>> >> >>> -fnesc-dump=variables -fnesc-dump=constants -fnesc-dump=typedefs
>> >> >>> -fnesc-dump=interfacedefs -fnesc-dump=tags -fnesc-dumpfile=app.xml
>> >> >>> gcc: Hello.o: No such file or directory
>> >> >>> make: *** [sim-exe] Error 1
>> >> >>> -----
>> >> >>> How can I solve the problem???
>> >> >>> Thank you very much in advance for your precious help
>> >> >>> Regards,
>> >> >>>
>> >> >>> Roberto
>> >> >>>
>> >> >>>
>> >> >>> 2008/1/30, David Gay <[EMAIL PROTECTED]>:
>> >> >>> >
>> >> >>> > #include works fine, but, as in C, it's just textual inclusion
>> >> >>> > (it
>> >> >>> > really is nothing complicated ;-)). So it's all as if you just
>> >> >>> > wrote:
>> >> >>> >
>> >> >>> > module ...
>> >> >>> > implementation
>> >> >>> > {
>> >> >>> > #ifndef C_CODE
>> >> >>> > #define C_CODE
>> >> >>> >
>> >> >>> > void Hello();
>> >> >>> >
>> >> >>> > #endif
>> >> >>> >
>> >> >>> >     event void Boot.booted()
>> >> >>> >     {
>> >> >>> >         call Timer0.startPeriodic( 250 );
>> >> >>> >     }
>> >> >>> >
>> >> >>> >     event void Timer0.fired()
>> >> >>> >     {
>> >> >>> >         Hello(); //Hello() is a function which is inside my C
>> >> >>> > code
>> >> >>> >     }
>> >> >>> > }
>> >> >>> >
>> >> >>> > which therefore just declares Hello() as an internal function
>> >> >>> > inside
>> >> >>> > BlinkC.
>> >> >>> >
>> >> >>> > In nesC, C functions must be declared before the
>> >> >>> > module/implementation
>> >> >>> > (or interface) part of a file. So what you wanted to do was:
>> >> >>> > /* nesC code*/
>> >> >>> > #include "c_code.h"
>> >> >>> > module ...
>> >> >>> > implementation
>> >> >>> > {
>> >> >>> >
>> >> >>> >     event void Boot.booted()
>> >> >>> >     {
>> >> >>> >         call Timer0.startPeriodic( 250 );
>> >> >>> >     }
>> >> >>> >
>> >> >>> >     event void Timer0.fired()
>> >> >>> >     {
>> >> >>> >         Hello(); //Hello() is a function which is inside my C
>> >> >>> > code
>> >> >>> >     }
>> >> >>> > }
>> >> >>> >
>> >> >>> > On Jan 30, 2008 6:37 AM, AIGroup <[EMAIL PROTECTED]> wrote:
>> >> >>> > > I believed...
>> >> >>> > > include directive works well. I have problem to edit the
>> >> >>> > > Makefile
>> >> >>> > > in
>> >> >>> > order
>> >> >>> > > to compile also the C file.
>> >> >>> >
>> >> >>> > Yes, you then also of course need to compile and link with your C
>> >> >>> > code. Several ways to do that... The easiest in this case at
>> >> >>> > least
>> >> >>> > is
>> >> >>> > probably to add
>> >> >>> >   LDFLAGS = c_code.c
>> >> >>> > to your Makefile, which should cause ncc to compile and link
>> >> >>> > c_code.c
>> >> >>> > with your nesC app. A slightly more traditional Makefile approach
>> >> >>> > would have you add
>> >> >>> >
>> >> >>> >   LDFLAGS = c_code.o
>> >> >>> >   c_code.c: c_code.h
>> >> >>> >       $(CC) -o c_code.o <your favourite flags> c_code.c
>> >> >>> >
>> >> >>> > to your Makefile... (don't cut & paste the text above, the
>> >> >>> > character
>> >> >>> > before $(CC) needs to be a tab to keep make happy, in this email
>> >> >>> > it's
>> >> >>> > some spaces...)
>> >> >>> >
>> >> >>> > David Gay
>> >> >>> >
>> >> >>> >
>> >> >>> > >
>> >> >>> > >
>> >> >>> > > 2008/1/30, AIGroup <[EMAIL PROTECTED]>:
>> >> >>> > >
>> >> >>> > > > Hi all.
>> >> >>> > > > I would like to include some routines in my nesC code as
>> >> >>> > > > follows
>> >> >>> > > (considering the BlinkApp for example):
>> >> >>> > > > /* nesC code*/
>> >> >>> > > > implementation
>> >> >>> > > > {
>> >> >>> > > >      #include "c_code.h"
>> >> >>> > > >
>> >> >>> > > >     event void Boot.booted()
>> >> >>> > > >     {
>> >> >>> > > >         call Timer0.startPeriodic( 250 );
>> >> >>> > > >     }
>> >> >>> > > >
>> >> >>> > > >     event void Timer0.fired()
>> >> >>> > > >     {
>> >> >>> > > >         Hello(); //Hello() is a function which is inside my C
>> >> >>> > > > code
>> >> >>> > > >     }
>> >> >>> > > > }
>> >> >>> > > > -------------------------
>> >> >>> > > > /*C code*/
>> >> >>> > > > /*c_code.h*/
>> >> >>> > > >
>> >> >>> > > > #ifndef C_CODE
>> >> >>> > > > #define C_CODE
>> >> >>> > > >
>> >> >>> > > > void Hello();
>> >> >>> > > >
>> >> >>> > > > #endif
>> >> >>> > > >
>> >> >>> > > > ---------------
>> >> >>> > > > /* c_code.c */
>> >> >>> > > >
>> >> >>> > > > #include "c_code.h"
>> >> >>> > > >
>> >> >>> > > > void Hello()
>> >> >>> > > > {
>> >> >>> > > >    printf("HELLO!\n")
>> >> >>> > > > }
>> >> >>> > > > ---------------
>> >> >>> > > > Compilation terminate with success, but if i try to execute a
>> >> >>> > simulation,
>> >> >>> > > this following error occurs:
>> >> >>> > > > undefined symbol: BlinkC$Hello
>> >> >>> > > > How can I solve this problem?
>> >> >>> > > > Thank you very much for your help!
>> >> >>> > > >
>> >> >>> > > >
>> >> >>> > > >
>> >> >>> > > >
>> >> >>> > >
>> >> >>> > >
>> >> >>> > > _______________________________________________
>> >> >>> > > Tinyos-help mailing list
>> >> >>> > > [email protected]
>> >> >>> > >
>> >> >>> >
>> >> >>> >
>> >> >>> >
>> >> >>> > https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>> >> >>> > >
>> >> >>> >
>> >> >>>
>> >> >>>
>> >> > _______________________________________________
>> >> > Tinyos-help mailing list
>> >> > [email protected]
>> >> >
>> >> > https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>> >> >
>> >
>> >
>
>

_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to