From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <5092AEB3.2070009@gmail.com> Date: Thu, 01 Nov 2012 17:17:39 +0000 From: Stefan Videv MIME-Version: 1.0 References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Xenomai] Compiling the Xenomai examples List-Id: Discussions about the Xenomai project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Gilles Chanteperdrix Cc: xenomai@xenomai.org On 11/01/2012 05:04 PM, Gilles Chanteperdrix wrote: > > Stefan Videv wrote: >> On 11/01/2012 04:32 PM, Gilles Chanteperdrix wrote: >>> Stefan Videv wrote: >>>> Hi All, >>>> >>>> I've been following this: >>>> >>>> http://www.xenomai.org/index.php/Examples >>>> >>>> on how to cross-compile the examples that come with Xenomai. >>>> >>>> However, running: >>>> >>>> make XENO=/media/rootfs/usr/xenomai/ ARCH=arm-linux-gnueabi- >>>> KSRC=/media/rootfs/usr/include >>>> >>>> where /media/rootfs/usr/xenomai is where xenomai is installed on the > SD card that "powers" my embedded system, arm-linux-gnueabi- is the > cross compiler chain I have running on my virtual box, and finally >>>> /media/rootfs/usr/include is where I installed the header files for > the kernel that is running on my embedded board. >>>> To me it seems that the XENO parameter is ignored altogether (same for > the KSRC it seems) which results in the particular included .h files > not >>>> being found on the path. Do I have any options rather than compiling > manually? >>> The problem is that you are cross-compiling, the instructions apply to > native compilation. The XENO parameter is not ignored, but as explained > on >>> the page you linked its role is to locate the xeno-config script. But > in order for this script to produce the correct flags (and as explained > if you >>> read xeno-config help) the DESTDIR environment variable needs to be set > (to >>> /media/rootfs if I understand correctly). >> After a quick attempt, things are looking better with DESTDIR. However, > it still gives errors: >> arm-linux-gnueabi-gcc -I/media/rootfs/usr/xenomai/include -D_GNU_SOURCE > -D_REENTRANT -D__XENO__ -lnative -L/media/rootfs/usr/xenomai/lib > -lxenomai -lpthread -lrt -Xlinker -rpath -Xlinker >> /media/rootfs/usr/xenomai/lib trivial-periodic.c -o trivial-periodic > /tmp/ccZ8pOKK.o: In function `demo': >> trivial-periodic.c:(.text+0x1e): undefined reference to >> `rt_task_set_periodic' >> trivial-periodic.c:(.text+0x22): undefined reference to `rt_timer_read' > trivial-periodic.c:(.text+0x2e): undefined reference to >> `rt_task_wait_period' >> trivial-periodic.c:(.text+0x32): undefined reference to `rt_timer_read' > /tmp/ccZ8pOKK.o: In function `main': >> trivial-periodic.c:(.text+0x10c): undefined reference to > `rt_task_create' trivial-periodic.c:(.text+0x124): undefined reference > to `rt_task_start' trivial-periodic.c:(.text+0x134): undefined reference > to `rt_task_delete' collect2: ld returned 1 exit status >> make[1]: *** [trivial-periodic] Error 1 >> make[1]: Leaving directory >> `/home/stefan/roosenXenomaiBone/xenomai-2.6.1/examples/native' >> >> However, if the above command is modified to look like this: >> >> arm-linux-gnueabi-gcc -I/media/rootfs/usr/xenomai/include -D_GNU_SOURCE > -D_REENTRANT -D__XENO__ -lnative -L/media/rootfs/usr/xenomai/lib > -lxenomai -lpthread -lrt -Xlinker -rpath -Xlinker >> /media/rootfs/usr/xenomai/lib trivial-periodic.c -o trivial-periodic > -lnative -lpthread -lxenomai >> It works just fine. How can I fix this in the Makefile, or am I still > doing something wrong? > > This has been reported several times. I proposed a patch in the following > mail: > http://www.xenomai.org/pipermail/xenomai/2012-October/026561.html > But since nobody reported whether it fixes anything, it is not merged yet. > > Yes this fixes the compilation for the examples in the native folder (kind of obvious since the patch fixes that particular make file). Should I go ahead and replicate the fix over the other make files? -- Stefan