Appcert reports a number of unbound symbols in one of my applications shared objects, but they are symbols in Solaris libraries that the shared object calls. Why doesn appcert recognize them?
This situation arises when the shared object does not record its dependencies and is dlopen’ed by the application rather than linked. Since the shared object is never linked, and appcert uses the linker to resolve symbols, appcert cannot figure out what is going on unless the shared object records its dependencies. Since the default compiler behavior is to NOT record dependencies in shared objects, this situation frequently happens with dlopen’ed shared objects. To avoid this problem, make sure that when a shared object is built, its dependencies on Solaris libraries are explicitly recorded by using the the “-l” and “-R” compiler options, and force symbol resolution at compile time with the “-z defs” options. See the man pages for cc and ld.
Related Questions
- Under Linux, upon running my application, why do I get the error message "error while loading shared libraries: libwx_gtk-x.x.so"?
- I have an application which is OK on Solaris Sparc 2.6. Do I have to run appcert on the software on Solaris 8 and 9 as well?
- Can appcert tell me if my application will run on Solaris version "N"?