[odb-users] Create schema error (unknown database schema '')
Andrey Devyatka
an9bit at gmail.com
Fri May 31 12:57:02 EDT 2013
Thank you!
2013/5/31 Boris Kolpackov <boris at codesynthesis.com>
> Hi Andrey,
>
> Andrey Devyatka <an9bit at gmail.com> writes:
>
> > Please tell me, can I use the static library in the following case:
> >
> > [...]
>
> This is exactly the same issue that we've discussed just a few days
> ago:
>
> http://www.codesynthesis.com/pipermail/odb-users/2013-May/001286.html
>
> Because your application doesn't directly reference any symbols from
> library-odb.cxx, the linker ignores library-odb.o from library.a. As
> a result the schema creation code does not end up in the executable.
>
> Normally this is not a problem since most application executables
> will also include code that persists objects, etc., which will
> force the linker to include all the object files from the library.
>
> In your test, however, all you do is create the schema. As mentioned
> in the above email, with GNU ld you can use the --whole-archive
> option to force the linker to include every object file from your
> static library:
>
>
> > $ g++ -o test2 main.o library.a -lodb-sqlite -lodb
>
> g++ -o test2 main.o -Wl,-whole-archive library.a -Wl,-no-whole-archive
> -lodb-sqlite -lodb
>
> Another thing that you may find useful is the 'separate' value for
> the --schema-format option. It will trigger the generation of the
> schema creation code as a separate C++ source file (library-schema.cxx).
> You can then perhaps link it directly to your executable instead of
> packaging it into a static library. See the ODB compiler command line
> documentation (man pages) for more information on this option.
>
> Boris
>
--
С уважением,
А. П. Девятка.
More information about the odb-users
mailing list