On Thu, Oct 21, 2010 at 1:35 AM, Tim Vandermeersch
<tim.vandermeer...@gmail.com> wrote:
> On Wed, Oct 20, 2010 at 4:29 PM, Igor Filippov [Contr]
> <filipp...@mail.nih.gov> wrote:
>> Tim,
>>
>>> I'll take a look since it is an important format to support. This
>>> should be the last major issue for static building though.
>>>
>>
>> Great - thank you! Could the static_plugins.o be also compiled into
>> libopenbabel.a by default? I think this would make sense...
>
> Yes, but this would require the -u flags again... The plugins are
> compiled into libopenbabel.a but the symbols are not taken from the
> libopenbabel.a archive when linking your executable since they are not
> referenced. There are two solutions:
>
> * Include the plugins inside the executable (or include
> static_plugin.o when linking)
> * Undefine the symbols explicitly at link time using the -u flag to
> ensure the symbols are taken from libopenbabel.a
>
> However, I just pushed the changes to include inchi in the static
> builds and you could use this command line to create a
> static_plugins.o that contains all plugins: (run this after compiling)
>
> tim...@timvdm-desktop:~/openbabel-gitsvn/build_static$ g++ -Wl,-r -o
> static_plugins.o -nostdlib  src/CMakeFiles/openbabel.dir/charges/*.o
> src/CMakeFiles/openbabel.dir/descriptors/*.o
> src/CMakeFiles/openbabel.dir/fingerprints/*.o
> src/CMakeFiles/openbabel.dir/forcefields/*.o
> src/CMakeFiles/openbabel.dir/formats/*.o
> src/CMakeFiles/openbabel.dir/formats/xml/*.o
> src/CMakeFiles/openbabel.dir/ops/*.o
>
> tim...@timvdm-desktop:~/openbabel-gitsvn/build_static$ ls static_plugins.o -lh
> -rw-r--r-- 1 timvdm timvdm 65M 2010-10-21 01:16 static_plugins.o
>
> tim...@timvdm-desktop:~/openbabel-gitsvn/build_static$ objdump -t
> static_plugins.o | grep _ZTVN9OpenBabel11InChIFormatE
> 0000000000000000 l    d
> .rodata._ZTVN9OpenBabel11InChIFormatE   0000000000000000
> .rodata._ZTVN9OpenBabel11InChIFormatE
> 0000000000000000  w    O
> .rodata._ZTVN9OpenBabel11InChIFormatE   00000000000000a8 .hidden
> _ZTVN9OpenBabel11InChIFormatE
>
> tim...@timvdm-desktop:~/openbabel-gitsvn/build_static$ g++ -Iinclude
> -I../include -static  ../doc/examples/static_executable/myexe.cpp
> static_plugins.o -o myexe  src/libopenbabel.a
> src/formats/inchi103/libinchi.a -Wl,-Bstatic -lxml2 -lz
> ...
> tim...@timvdm-desktop:~/openbabel-gitsvn/build_static$ ./myexe
> ... lists all plugins ...
>
> The command first line "merges" all the object files in a single
> static_plugins.o. There is probably a better way but at least you
> should now be able to make a static executable with all plugins.

With r4240, plugins are now included in an executable without any
additional hacks. It's all done in C++ which means it is also easier
to maintain for different compilers. This also means that the tests
can now be executed for static builds. This helped me identify some
missing plugins.

Tim

> Tim
>
>> Igor
>>
>>
>

------------------------------------------------------------------------------
Nokia and AT&T present the 2010 Calling All Innovators-North America contest
Create new apps & games for the Nokia N8 for consumers in  U.S. and Canada
$10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing
Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store 
http://p.sf.net/sfu/nokia-dev2dev
_______________________________________________
OpenBabel-discuss mailing list
OpenBabel-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbabel-discuss

Reply via email to