Xerces-C++
  1. Xerces-C++
  2. XERCESC-1956

x86-64 binary distribution can't be statically linked into a shared library

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 3.1.1
    • Fix Version/s: 3.1.2, 3.2.0
    • Component/s: Build
    • Labels:
      None
    • Environment:
      Linux x86-64

      Description

      I'm creating a shared object library that uses Xerces-C++. I'd prefer to link my code to the static library (libxerces-c.a). However, when I try to do that, I get a link error: "relocation R_X86_64_32S against `a local symbol' can not be used when making a shared object; recompile with -fPIC". (I've encountered this on Linux so far, but this is actually cross-platform code that will also run on Windows and Mac, so if there would be a similar problem on those platforms, please consider this bug to include them.) It appears that it is impossible to statically link a shared object against 64-bit code that is position dependent, since the shared object must contain only position-independent code. The static libraries can only be linked directly into an executable.

      To fix this, I suggest that you please compile the static libraries for 64-bit Intel binary distributions such that they have position-independent code (the -fPIC option on gcc, as mentioned in the error above). Then it will be possible to link them either into an executable or into a shared object library. Thanks!

        Activity

        No work has yet been logged on this issue.

          People

          • Assignee:
            Unassigned
            Reporter:
            Lee Doron
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:

              Development