Xerces dependency problem
Hello,
I'm trying to get an application running but it fails because of dependency problems. The application binary requires some shared libraries that are not installed on my distribution (by the way, I'm using openSuSe 11.3 x86), instead i have newer versions installed. So I made a link for every library, naming it accordingly to the required dependency. The application also came with a Xerces-c-2.7.0-11.i586.rpm, but when I try to install it: error: Failed dependencies: libicudata.so.34 is needed by Xerces-c-2.7.0-11.i586 libicuuc.so.34 is needed by Xerces-c-2.7.0-11.i586 Both files exist in the /lib and /usr/lib directories, but the rpm installer can't find them. So I installed the rpm with --nodeps. Now, when I run the application all dependencies are resolved, but it gives errors like: undefined symbol: u_toupper_3_4 (/usr/lib/libxerces-c.so.27) Again, Xerces causes problems. Does anybody have an idea how I could solve this? |
Well, one problem solved.
I managed to install another version of Xerces, but now the application binary doesn't run because it has unresolved symbols. Among the symbols are even glibc functions like malloc or fopen. The question is: can I solve the problem without recompiling and linking the main binary? Note that I don't have the source code, so rebuilding the binary is not an option. |
Welcome to LQ. .. .. :) ..
Please open a terminal window, and do 1: su enter-password 2: zypper in xerces-c .. which will install version ' 3.01 '. Or use the 'Package Manager' (Yast) for package install. The most basic 5,000 packages are available. Another 6,000 packages are in the Packman repo : http://en.opensuse.org/Additional_pa...tories#Packman http://en.opensuse.org/Additional_package_repositories .. |
Quote:
|
Quote:
1. try to find some version of xerces that will satisfy your application in questions and not break anything in your system. It's what you are doing and find out it's a bit tricky. 2. run your application in some kind of "isolated environment" What isolated environment can be ? - Use LD_LIBRARY_PATH to specify different xerces for only this application - Run application in chroot-ed environment - Run this application in the virtual machine. - Install in the virtual machine distribution your application is supposed to run on. Then use statifier (http://statifier.sf.net) or Ermine (http://magicErmine.com) to convert this application into self-containing executable, that can be copied and used to virtually any Linux box. |
All times are GMT -5. The time now is 07:14 PM. |