I appear to be posting a lot to this list, so I'll try and keep this brief. Out of CVS, Xerces compiles to a shared .so library (talking Linux here). I then need to include libxerces.so with an application when distributing it, and hence users must configure their LD_LIBRARY_PATH or have access to put the .so in (eg) /usr/lib.
This is possible for a user to mess up[1], so in the past I've linked against .a versions of XML parser libraries, and just distributed the resulting executable. I'm now trying to do this with Xerces. Replacing the final g++ execution of the build process (g++ -DLINUX -shared -fpic -o libxerces-c1_0.so ...) with a call to "ar" and then to "ranlib" produces libxerces.a which I can happily link against. When I attempt to run the binary on another (clean, no Xerces or ICU or anything installed) machine, it complains with: The Xerces-C system could not be initialized. If you are using ICU, then the most likely reason for this failure is the inability to find the ICU coverter files. [etc] I didn't think I was using ICU, since in my original runConfigure invocation I specified the internal transcoder. Also, if I link against the .so version, copy it to the clean machine, set up my LD_LIBRARY_PATH and run my executable, it works fine without asking for the ICU files. Yikes, that wasn't as brief as I'd hoped. Any hints appreciated, Mike. [1] Of course, I could be insulting a lot of Linux users here, but on Windows it's a case of "download, unzip, run" and I'd like the Linux version to be as easy.
