Hi Norman,

Thank you, this helped me a lot:
After adding the LIBS declaration in your 'target.mk' file, the build
system should have built the following libraries for you:

  libm.lib.so  (the math library)
  libc.lib.so  (the C library, on which libm depends)
  ld.lib.so    (the dynamic linker)

Just take a look at your '<build-dir>/bin/' directory to see if the
build succeeded.

In order to let Genode access those libraries, we need to include them
in the boot image. This can be done by adding the corresponding file
names to the list of 'boot_modules' in your 'something.run' script.

I hadn't included them to the boot image. I also found, that I needed to add the ROM service. I am now reading the os repository, there is a lot of useful stuff to find.


Greets,

Edgar











On Mon, Dec 9, 2013 at 7:06 PM, Norman Feske <norman.feske@...1...> wrote:
Hi Edgar,

> I am trying to add some libraries in my build.conf:
>
> LIBS = base libm

The LIBS declaration does not belong in your 'build.conf' but in your
'target.mk' file. If declared, the libraries on which the target depends
are built automatically. Because 'libm' is a shared library, 'ld.lib.so'
will be built as well.

> But it doesn't seem to load. The error message I get is:
>
> [init] Could not open file "ld.lib.so <http://ld.lib.so>"
> [init] Dynamically linked file found, but no dynamic linker binary present
> [init] unknown exception?
> [init] Dynamically linked file found, but no dynamic linker binary present
> [init] unknown exception?
>
> I am using the nova_x86_32 kernel, but on other kernels this also
> happens. If I remove libm my image works again. I haven't found anything
> to build a dynamic linker in the source.
>
> Steps I did:
>
> create build dir.
>
> add libports to etc/build.conf
> add my source repository to the build dir
>
> make prepare PKG=libc && make prepare PKG=stdcxx
>
> make run/something
>
> The run script starts up qemu. The kernel boots.
>
> And then in qemu it cannot find a linker binary.

After adding the LIBS declaration in your 'target.mk' file, the build
system should have built the following libraries for you:

  libm.lib.so  (the math library)
  libc.lib.so  (the C library, on which libm depends)
  ld.lib.so    (the dynamic linker)

Just take a look at your '<build-dir>/bin/' directory to see if the
build succeeded.

In order to let Genode access those libraries, we need to include them
in the boot image. This can be done by adding the corresponding file
names to the list of 'boot_modules' in your 'something.run' script.

> How should I add libraries to my project? I am probably missing some
> stupid step.

Not stupid at all. Please keep asking! :-)

Cheers
Norman

--
Dr.-Ing. Norman Feske
Genode Labs

http://www.genode-labs.com · http://genode.org

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth

------------------------------------------------------------------------------
Sponsored by Intel(R) XDK
Develop, test and display web and hybrid apps with a single code base.
Download it for free now!
http://pubads.g.doubleclick.net/gampad/clk?id=111408631&iu=/4140/ostg.clktrk
_______________________________________________
Genode-main mailing list
Genode-main@...12...ceforge.net
https://lists.sourceforge.net/lists/listinfo/genode-main