Fail to build hello.exe sample on NetBSD for BSP MIPS jmr3904.
Chris Johns
chrisj at rtems.org
Tue Aug 27 08:13:17 UTC 2013
Ivan Temp wrote:
> Hi,
> thanks for your reply.
> Actually I am writing a simple text with my experience, just in case
> could help to build RTEMS on NetBSD. I am trying a couple of fresh
> install of NetBSD versions right to test whether it works with several
> options. Everything is embryonic now.
Did you look at the RSB on NetBSD ?
> Anyway I used this to build gcc:
>
> cd ../gcc-4.8.1
> ln -s ../newlib-2.0.0/newlib .
> cd ../b-gcc
>
> ../gcc-4.8.1/configure \
> --target=${TARGET} \
> --with-gnu-as --with-newlib \
> --verbose \
> --enable-threads \
> --enable-languages="c,c++" \
> --prefix=/usr/rtems/rtems-4.11 \
> --with-gmp=/usr/pkg \
> --with-mpfr=/usr/pkg \
> --with-mpc=/usr/pkg \
>
> I needed to set LD_LIBRARY_PATH to /usr/pkg where gmp, mpfr and
> mpcomplex were installed using pkgin. and added
> /usr/rtems/rtems-4.11/bin to PATH.
> I also installed "isl" but I do not know if is really needed, I have
> to check a bit more.
>
> Because I did not use /opt directory I have to set also
> --prefix=/usr/rtems/rtems-4.11 to the rtems build, I have seen some
> default configurations that point directly to /opt.
You can also use /usr/local/rtems/4.11.
> This is the command I used for RTEMS build with no success:
>
> VirtualNetBSD# ../../rtems/configure --target=$TARGET
> --enable-rtemsbsp=jmr3904 \
> --enable-tests=samples --disable-posix \
> --prefix=/usr/rtems/rtems-4.11
>
> Then I enabled posix following Chris recommendation (thanks) and at
> least now compiles. I am ok setting posix but, do not you think it
> should work with posix disable?
It depends on the patches you use to build gcc. I have a recent patch
that switches gcc from the RTEMS thread model to POSIX. The RTEMS thread
model is broken with SMP and requires lots of work to make it SMP safe
and what is saves you over the POSIX interface will be questionable. The
POSIX support in GCC need only minor changes to work.
The background is POSIX was consider a extra overhead in terms of code
size and memory footprint if all you needed was the classic API. This is
still true because an extra piece of memory is allocated in each TCB
with POSIX enabled. In terms of code size the overhead is becoming less
as time goes on because the classic API needs functionality that POSIX
has. The plan is to move code in the POSIX API to the score so it can be
used by both APIs. The move to SMP is the reason. The classic API does
not have a condition variable and the libblock cache needs this because
the current code is broken with SMP. The classic API's task variable API
should be depreciated and removed from RTEMS as it is not SMP safe and
replaced with something like the POSIX keys.
> I am going to test gdb now, I will let you know.
>
> By the way, I am not an expert at all but want to learn.
>
Excellent and welcome.
Chris
More information about the users
mailing list