Jeremy Dean wrote:
I am building a static library of the standard library, however when I
try to run my executable on my deployed machine I get the following
error:
exec(): 0509-036 Cannot load program tpdlist because of the following
errors:
0509-150 Dependent module libstd12s_rw.a(std12s_rw.o) could
not be loaded.
0509-022 Cannot load module libstd12s_rw.a(std12s_rw.o).
0509-026 System error: A file or directory in the path name does
not exist.
So based on this error message, do I also need to deploy the Standard
library (libstd12s_rw.a)? Does this not defeat the purpose of a static
library?
Yes. We've been using the -qmkshrobj compiler flag to prelink library
object files (i.e., to generate code for template specializations used
in the library sources). The side-effect of using this option is that
it results in the archiver producing an AIX shared archive rather an
ordinary one. Shared archives must be deployed just like shared
libraries do.
Rebuilding the library with a recent version of XLC++ and without the
-qmkshrobj option should let you produce an ordinary archive that could
be used to link self-contained programs (it appears to with 8.0).
Earlier versions of VisualAge might be problematic (likely due to the
tempinc model).
Could you please file an issue to have this fixed?
Martin