https://bugzilla.novell.com/show_bug.cgi?id=218356 Summary: pvm3 package has incomplete (-> broken) support for shared libraries Product: SUSE Linux 10.1 Version: Final Platform: x86-64 OS/Version: Other Status: NEW Severity: Normal Priority: P5 - None Component: Development AssignedTo: pth@novell.com ReportedBy: jan@etpmod.phys.tue.nl QAContact: qa@suse.de The email correspondence between a PVM3 developer and myself explains the problem in detail. On Thu, Nov 02, 2006 at 10:02:29PM +0100, Jan van Dijk wrote:
Good evening,
First of all, I apologise if this question has been answered already; unfortunately I did not find a publically available archive of this list, and I googled to no avail.
We have an application that requires (dynamic) linking against pvm3 and gpvm3. On our system (SuSE linux x86_64), libpvm3.so is available, but I could not find a libgpvm3.so. Linking against libgpvm3.a does not work because that library has been built without -fpic. The message we get is:
/usr/lib64/gcc/x86_64-suse-linux/4.1.0/../../../../x86_64-suse-linux/bin/ld: /usr/lib/pvm3/lib/LINUX64/libpvm3.a(lpvmgen.o):
relocation R_X86_64_32 against `pvmmyctx' can not be used when making a shared object; recompile with -fPIC /usr/lib/pvm3/lib/LINUX64/libpvm3.a: could not read symbols: Bad value
I inspected the pvm3.4.5 source code, and saw that indeed in the pvmgs/ directory support for creating libgpvm3.so is missing in Makefile.mak. I noticed that support for creating a .dll *is* present.
Is this merely an oversight? Could a .so be built, just like support for building libpvm.so is present in src/LINUX64/Makefile? Is somebody working on this? If not, could libgpvm3.a be built with -fpic (by default) so it can be linked against when libpvm3.so is used?
Thank you for your reply. If some of my questions do not make sense, please note that I am utterly unfamiliar with the build system used by PVM.
Jan van Dijk.
Hi Jan, Well, the core distribution of PVM, that we maintain, doesn't have _any_ support for shared objects per se... :-) I suspect that someone at SuSE went ahead and added some make targets to produce a shared object for the latest Linux kernel, but it is impractical for us to generally provide this capability for the vast collection of system architectures that PVM supports. Anyway, disclaimers aside, if they've maintained the basic Makefile and Makefile.aimk infrastructure in the SuSE rpm, then you should be able to edit the top level: pvm3/Makefile.aimk and add "-fPIC" to the $CFLOPTS define (and make sure then that $PVMOPTS includes $CFLOPTS, as in: CC = cc F77 = f77 CFLOPTS = -fPIC PVMOPTS = CC="$(CC)" F77="$(F77)" CFLOPTS="$(CFLOPTS)" then you can do a "make g" to build the libgpvm3 objects with the right flag. (Of course, if SuSE has changed the build structure, then who knows where things are now... :-Q) Unfortunately, either way, to actually build the libgpvm3.so file, you'll need to manually assemble the object files, but the list is short: cc -shared -o libgpvm3.so pvmgsu_core.o pvmgsu_aux.o pvmgs_func.o Hope this helps! Sorry the solution isn't more automatic... :-] (Perhaps you should point this omission out to the SuSE folks...? :) All the Best, Jim P.S. Note: the Makefile.mak file you've found in pvm3/pvmgs is for Win32 systems, not Linux...! :-) -- Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug, or are watching someone who is.