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

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



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/developers-app.rst;h=45d9bd5b2bb10b3d04135d66b5162a59d54dc2b6;hb=HEAD#l163
        
<http://xenbits.xen.org/gitweb/?p=unikraft/unikraft.git;a=blob;f=doc/guides/developers-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


_______________________________________________
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®.