Gennadiy Rozental wrote:
Hi Gennadiy,
I'm sorry for the screwup. It looks like I didn't capture the stderr output in the text file. The attached file is from another build attempt that fails updating those same 6 targets, but it shows the undefined symbol errors. If I go and look in the build directories, I can see that
I am no expect for Mac, but from an output it looks like this system, the same as Windows, doesn't support unresolved symbols within shared libraries. If you could confirm that this is true, I will have to update a Jamfile to prevent these to be built and you should be using static libraries instead. If it's not true - this is toolset issue.
Gennadiy
It appears that the default treatment for undefined symbols is error, but there are a couple of ld flags that can circumvent that. Excerpt from "man ld": -undefined treatment Specifies how undefined symbols are to be treated. treatment can be: error, warning, or suppress. Which cause the treatment of undefined symbols as either, errors, warnings, or suppresses the checking of undefined symbols. The default is to treat undefined symbols as errors. When the environment variable MACOSX_DEPLOYMENT_TARGET is set to 10.3 or higher then -unde- fined dynamic_lookup can also be used to allow any undefined symbols to be looked up dynamically at runtime. Use of a binary built with this flag requires a system with a dynamic linker from Mac OS X 10.3 or later. The flag -undefined define_a_way can also be used to cause the static linker to create a private definition for all undefined symbols. This flag should only be used if it is known that the undefined symbols are not refer- enced as any use of them may cause a crash. -U sym Allow the symbol sym to be undefined, even if the -r flag is not given. Produce an executable file if the only undefined symbols are those specified with -U. This option overlaps with a compiler option. If you use the compiler driver cc(1) to invoke ld, invoke this option in this way: -Wl,-U,sym. And since -U references -r: -r Save the relocation information in the output file so that it can be the subject of another ld run. The resulting file type is a Mach-O relocatable file (MH_OBJECT) if not otherwise speci- fied. This flag also prevents final definitions from being given to common symbols, and suppresses the `undefined symbol' diagnostics. So it looks like the dylibs can be built if the right flags are passed to ld. I would try it, but I have no idea how to go about changing the jamfile, or even which one to change. If you want me to test a modified jamfile, you could email it with instructions to rush at manbert dot com. - Rush