ARIA Incompatible Libraries

From MobileRobots Research and Academic Customer Support

Jump to: navigation, search

I have upgraded my operating system or my compiler, or moved ARIA and other code to a different system with a different compiler, and now I get bad data, link errors, or mysterious crashes. What's wrong?

If your different OS has different GCC or C library versions, then two things might happen:

1. Programs might end up linked against different versions of the same libary. If, for example, libAria.so was built with gcc 3.4 and linked against libstdc++.so.6, and your other system uses gcc 3.3 and libstdc++.so.5, running the 'ldd' command on a program with mixed linkage will show both libstdc++.so.6 and libstdc++.so.5 linked as shared libraries. Sometimes this works without problems, sometimes not. The solutions are to either install GCC 3.4, or to recompile ARIA using the new version. Note, however, that you must use GCC 3.4 if you are using ARNL.

2. If you build a program with a version of GCC that produces code that isn't binary-compatbile with the ARIA library, it will fail to link, with an error message about incompatible library versions or "personality" symbols. For example GCC 3.4 is not ABI-compatible with GCC 2.95. libAria.so normally has been built with GCC 3.4. If you build a program with GCC 2.95, then try to link against that libAria.so, the linker will fail. The solutions are to either use the same GCC version (3.4), or to recompile libAria.so and all other libraries using your preferred GCC version.

Similarly, on Windows, your program and the ARIA DLL must be built with compatible compilers. In particular, Visual C++ 6 and Visual C++ .NET/200. (version 7) are not compatible and you must recompile ARIA if using a compiler other than VC .NET/2003.

Personal tools