[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Minios-devel] [Unikraft] Static Libraries not being linked properly


  • To: Ajay Garg <ajaygargnsit@xxxxxxxxx>, Simon Kuenzer <simon.kuenzer@xxxxxxxxx>
  • From: Wei Chen <Wei.Chen@xxxxxxx>
  • Date: Fri, 4 May 2018 02:51:11 +0000
  • Accept-language: en-US
  • Authentication-results: spf=none (sender IP is ) smtp.mailfrom=Wei.Chen@xxxxxxx;
  • Cc: "minios-devel@xxxxxxxxxxxxxxxxxxxx" <minios-devel@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Fri, 04 May 2018 02:51:25 +0000
  • List-id: Mini-os development list <minios-devel.lists.xenproject.org>
  • Spamdiagnosticmetadata: NSPM
  • Spamdiagnosticoutput: 1:99
  • Thread-index: AQHT06QTkh7b+gLJn0aR3f9tdvMCnKQANaYAgAGgVYCAA+fVgIAAC/rAgAACKrCAABQlAIAAAVgwgAAGjACAAAth4IAAAnEAgAoDjoCADbjjAIAAZvwAgAA1TICAAKrZkA==
  • Thread-topic: [Minios-devel] [Unikraft] Static Libraries not being linked properly

Hi Ajay,

As what I understand, most of the libraries will use the posix
APIs that provided by libc to use system functions. For Linux,
the libc is a wrap of Linux system calls. For Unikraft, the Libc
is a wrap of platform APIs. Linux has more than 300 system calls,
as Unikraft is new, we don’t have so many platform APIs in this
stage. This means we haven't implemented all posix APIs in nolibc,
if the libraries of filesystem/lwip/other are using some APIs that
we are missing, you have to implement them in current stage.

Regards,
Wei Chen

> -----Original Message-----
> From: Ajay Garg <ajaygargnsit@xxxxxxxxx>
> Sent: 2018年5月4日 0:22
> To: Simon Kuenzer <simon.kuenzer@xxxxxxxxx>
> Cc: Wei Chen <Wei.Chen@xxxxxxx>; minios-devel@xxxxxxxxxxxxxxxxxxxx
> Subject: Re: [Minios-devel] [Unikraft] Static Libraries not being linked
> properly
>
> Hi Simon.
>
> Thanks for the help.
>
> I am just curious, as to what determines as to what code would be
> included and what excluded in nolibc/newlibc (or any unikraft-library
> for that matter)?
> Would the same criteria apply when integrating code of
> fiilesystem/lwip/other libraries?
>
> On Thu, May 3, 2018 at 6:41 PM, Simon Kuenzer <simon.kuenzer@xxxxxxxxx> wrote:
> > On 03.05.2018 09:02, Ajay Garg wrote:
> >>
> >> Thanks a ton Simon for reverting back.
> >>
> >> I removed calling librt.a and libpthread.a.
> >> Then, I cloned newlib, added it to config-files, and it compiled to
> >> libnewlibc and libnewlibm fine.
> >>
> >> However, I am still getting
> >>
> >>                         undefined reference to `clock_gettime'
> >>
> >> On doing a grep in newlib folder, there is no string with name
> >> "clock_gettime".
> >>
> >> Obviously, we need to add some more code in newlib, right?
> >
> >
> > In this case, you are right. You have to provide your own implementation for
> > this function. As a start, you could use the monotonic clock to retrieve
> > time information from the Unikraft platform and convert it to the according
> > data types.
> >
> >
> >>
> >> On Tue, Apr 24, 2018 at 6:59 PM, Simon Kuenzer <simon.kuenzer@xxxxxxxxx>
> >> wrote:
> >>>
> >>> Hey Ajay,
> >>>
> >>> welcome to Unikraft! Sorry for being non-response for so long time. This
> >>> should change now since the core Unikraft people (including me) are back
> >>> to
> >>> the project.
> >>>
> >>> In your application's Makefile.uk, you can try to add static libraries by
> >>> appending them to the APPNAME_OBJS list. However, I would not do this
> >>> with
> >>> librt.a and libpthread.a. The libraries you selected expect a Linux
> >>> system
> >>> call interface being available to reach functionality provided by  the
> >>> kernel. We obviously do not have this on Unikraft, so the libraries
> >>> wouldn't
> >>> work (even if you might be able to create a binary with them).
> >>>
> >>> The functions of those libraries are usually provided by a libc. Wei is
> >>> right that libnolibc - which is available in the tree - only provides a
> >>> subset of libc functionality. But you could try using newlib instead:
> >>>
> >>> http://xenbits.xen.org/gitweb/?p=unikraft/libs/newlib.git;a=summary
> >>>
> >>> This port uses calls to the Unikraft API directly instead of using system
> >>> calls. For instance, pthread_create() is going to call
> >>> uk_sched_thread_create() in libuksched. Please note that we have a patch
> >>> series pending that enhances scheduling functionality in Unikraft. There
> >>> will be another patch series upcoming that does integrate those changes
> >>> to
> >>> newlib. So, the current state might not work yet for you, you may need to
> >>> check again in two weeks.
> >>>
> >>> Thanks,
> >>>
> >>> Simon
> >>>
> >>> On 18.04.2018 06:34, Ajay Garg wrote:
> >>>>
> >>>>
> >>>> Ok, thanks Wei for the clarification ..
> >>>>
> >>>> On Wed, Apr 18, 2018 at 9:59 AM, Wei Chen <Wei.Chen@xxxxxxx
> >>>> <mailto:Wei.Chen@xxxxxxx>> wrote:
> >>>>
> >>>>      I think currently the answer is ‘YES’. We could not link libc.a____
> >>>>
> >>>>      directly in Unikraft. Libc.a requires some dependencies that____
> >>>>
> >>>>      unikraftdoesn’t provide.____
> >>>>
> >>>>      __ __
> >>>>
> >>>>      *From:*Ajay Garg <ajaygargnsit@xxxxxxxxx
> >>>>      <mailto:ajaygargnsit@xxxxxxxxx>>
> >>>>      *Sent:* 2018年4月18日11:45
> >>>>
> >>>>
> >>>>      *To:* Wei Chen <Wei.Chen@xxxxxxx <mailto:Wei.Chen@xxxxxxx>>
> >>>>      *Cc:* minios-devel@xxxxxxxxxxxxxxxxxxxx
> >>>>      <mailto:minios-devel@xxxxxxxxxxxxxxxxxxxx>
> >>>>      *Subject:* Re: [Minios-devel] [Unikraft] Static Libraries not being
> >>>>      linked properly____
> >>>>
> >>>>      __ __
> >>>>
> >>>>      Ok Wei, got it ...
> >>>>
> >>>>      So, I added "/usr/lib/x86_64-linux-gnu/libc.a" also in
> >>>>      "APPCOREMARK_OBJS-y", but the linking errors still persist.____
> >>>>
> >>>>      I now assume that pre-compiled static libc.a CANNOT be added into
> >>>>      unikraft, right?____
> >>>>
> >>>>      __ __
> >>>>
> >>>>      On Wed, Apr 18, 2018 at 9:01 AM, Wei Chen <Wei.Chen@xxxxxxx
> >>>>      <mailto:Wei.Chen@xxxxxxx>> wrote:____
> >>>>
> >>>>          Hi Ajay,____
> >>>>
> >>>>          ____
> >>>>
> >>>>          I think we have to classify the static-pre-compiled
> >>>> libraries.____
> >>>>
> >>>>          For instance, if the static-pre-compiled library is a math
> >>>>          library.____
> >>>>
> >>>>          It just does some Mathematical Computing and doesn’t depend
> >>>> on____
> >>>>
> >>>>          Other libraries. I think this math library can be link to____
> >>>>
> >>>>          Unikraft. Another instance, if the static-pre-compiled
> >>>> library____
> >>>>
> >>>>          depends on other libraries. You have to guarantee the
> >>>> dependent____
> >>>>
> >>>>          libraries are in the Unikraft library pool.____
> >>>>
> >>>>          ____
> >>>>
> >>>>          In your case, the /usr/lib/x86_64-linux-gnu/librt.a and
> >>>>          /usr/lib/x86_64-linux-gnu/libpthread.a____
> >>>>
> >>>>          would link to libc.a to solve their link dependencies. But the
> >>>>          nolibc____
> >>>>
> >>>>          In Unikraft is just a subset of libc.a____
> >>>>
> >>>>          ____
> >>>>
> >>>>          Regards,____
> >>>>
> >>>>          Wei Chen____
> >>>>
> >>>>          ____
> >>>>
> >>>>          *From:* Ajay Garg <ajaygargnsit@xxxxxxxxx
> >>>>          <mailto:ajaygargnsit@xxxxxxxxx>>
> >>>>          *Sent:* 2018年4月18日 11:17
> >>>>          *To:* Wei Chen <Wei.Chen@xxxxxxx <mailto:Wei.Chen@xxxxxxx>>
> >>>>          *Cc:* minios-devel@xxxxxxxxxxxxxxxxxxxx
> >>>>          <mailto:minios-devel@xxxxxxxxxxxxxxxxxxxx>
> >>>>          *Subject:* Re: [Minios-devel] [Unikraft] Static Libraries not
> >>>>          being linked properly____
> >>>>
> >>>>          ____
> >>>>
> >>>>          Hi Wei.____
> >>>>
> >>>>          Thanks for the help.____
> >>>>
> >>>>          Actually, my original query is how to link pre-compiled
> >>>> (static)
> >>>>          libraries in unikraft?____
> >>>>
> >>>>          I tried as per the documentation at
> >>>>
> >>>>
> >>>>
> http://xenbits.xen.org/gitweb/?p=unikraft/unikraft.git;a=blob;f=doc/guides/dev
> elopers-app.rst;h=45d9bd5b2bb10b3d04135d66b5162a59d54dc2b6;hb=HEAD#l163
> >>>>
> >>>>
> >>>>
> <http://xenbits.xen.org/gitweb/?p=unikraft/unikraft.git;a=blob;f=doc/guides/de
> velopers-app.rst;h=45d9bd5b2bb10b3d04135d66b5162a59d54dc2b6;hb=HEAD#l163>
> >>>>          ____
> >>>>
> >>>>          but the libraries do not resolve linking problems.____
> >>>>
> >>>>          Or am I understanding it incorrectly? Can pre-compiled static
> >>>>          libraries be integrated/linked at all in unikraft?____
> >>>>
> >>>>          ____
> >>>>
> >>>>          ____
> >>>>
> >>>>          On Wed, Apr 18, 2018 at 7:48 AM, Wei Chen <Wei.Chen@xxxxxxx
> >>>>          <mailto:Wei.Chen@xxxxxxx>> wrote:____
> >>>>
> >>>>              But the clock_gettime hasn’t been implemented in nolibc or
> >>>>              libtime.____
> >>>>
> >>>>              If your application just uses this function to print
> >>>>              timestampe, you____
> >>>>
> >>>>              can implement a dummy function in your code in this time to
> >>>>              pass the____
> >>>>
> >>>>              linking.____
> >>>>
> >>>>              ____
> >>>>
> >>>>              ____
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>          -- ____
> >>>>
> >>>>          Regards,
> >>>>          Ajay____
> >>>>
> >>>>          IMPORTANT NOTICE: The contents of this email and any
> >>>> attachments
> >>>>          are confidential and may also be privileged. If you are not the
> >>>>          intended recipient, please notify the sender immediately and do
> >>>>          not disclose the contents to any other person, use it for any
> >>>>          purpose, or store or copy the information in any medium. Thank
> >>>>          you. ____
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>      -- ____
> >>>>
> >>>>      Regards,
> >>>>      Ajay____
> >>>>
> >>>>      IMPORTANT NOTICE: The contents of this email and any attachments
> >>>> are
> >>>>      confidential and may also be privileged. If you are not the
> >>>> intended
> >>>>      recipient, please notify the sender immediately and do not disclose
> >>>>      the contents to any other person, use it for any purpose, or store
> >>>>      or copy the information in any medium. Thank you.
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> --
> >>>> Regards,
> >>>> Ajay
> >>>>
> >>>>
> >>>> _______________________________________________
> >>>> Minios-devel mailing list
> >>>> Minios-devel@xxxxxxxxxxxxxxxxxxxx
> >>>> https://lists.xenproject.org/mailman/listinfo/minios-devel
> >>>>
> >>>
> >>
> >>
> >>
> >
>
>
>
> --
> Regards,
> Ajay
IMPORTANT NOTICE: The contents of this email and any attachments are 
confidential and may also be privileged. If you are not the intended recipient, 
please notify the sender immediately and do not disclose the contents to any 
other person, use it for any purpose, or store or copy the information in any 
medium. Thank you.
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.