Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

/usr/bin/ld: final link failed: bad value while Building wheel for pyopendds (setup.py) ... error #39

Closed
ApsaraGeek opened this issue Nov 29, 2021 · 1 comment · Fixed by #46

Comments

@ApsaraGeek
Copy link

ApsaraGeek commented Nov 29, 2021

python version 3.8.12+
pip version 21.3.1
Ubuntu 20.04.3 LTS
When I try to "pip install . " opendds, I get the following error.

Processing /home/apsara/Videostreaming_v1/pyopendds_vs
  Preparing metadata (setup.py) ... done
Requirement already satisfied: jinja2 in /home/apsara/Videostreaming_v1/videnv/lib/python3.8/site-packages (from pyopendds==0.1.0) (3.0.3)
Requirement already satisfied: MarkupSafe>=2.0 in /home/apsara/Videostreaming_v1/videnv/lib/python3.8/site-packages (from jinja2->pyopendds==0.1.0) (2.0.1)
Building wheels for collected packages: pyopendds
  Building wheel for pyopendds (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /home/apsara/Videostreaming_v1/videnv/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/home/apsara/Videostreaming_v1/pyopendds_vs/setup.py'"'"'; __file__='"'"'/home/apsara/Videostreaming_v1/pyopendds_vs/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-jlra7w45
       cwd: /home/apsara/Videostreaming_v1/pyopendds_vs/
  Complete output (81 lines):
  /home/apsara/Videostreaming_v1/videnv/lib/python3.8/site-packages/setuptools/dist.py:717: UserWarning: Usage of dash-separated 'author-email' will not be supported in future versions. Please use the underscore name 'author_email' instead
    warnings.warn(
  /home/apsara/Videostreaming_v1/videnv/lib/python3.8/site-packages/setuptools/dist.py:717: UserWarning: Usage of dash-separated 'home-page' will not be supported in future versions. Please use the underscore name 'home_page' instead
    warnings.warn(
  /home/apsara/Videostreaming_v1/videnv/lib/python3.8/site-packages/setuptools/dist.py:717: UserWarning: Usage of dash-separated 'long-description' will not be supported in future versions. Please use the underscore name 'long_description' instead
    warnings.warn(
  /home/apsara/Videostreaming_v1/videnv/lib/python3.8/site-packages/setuptools/dist.py:717: UserWarning: Usage of dash-separated 'long-description-content-type' will not be supported in future versions. Please use the underscore name 'long_description_content_type' instead
    warnings.warn(
  /home/apsara/Videostreaming_v1/videnv/lib/python3.8/site-packages/setuptools/dist.py:717: UserWarning: Usage of dash-separated 'license-file' will not be supported in future versions. Please use the underscore name 'license_file' instead
    warnings.warn(
  running bdist_wheel
  running build
  running build_py
  creating build/lib.linux-x86_64-3.8
  creating build/lib.linux-x86_64-3.8/pyopendds
  copying pyopendds/DomainParticipant.py -> build/lib.linux-x86_64-3.8/pyopendds
  copying pyopendds/__init__.py -> build/lib.linux-x86_64-3.8/pyopendds
  copying pyopendds/exceptions.py -> build/lib.linux-x86_64-3.8/pyopendds
  copying pyopendds/constants.py -> build/lib.linux-x86_64-3.8/pyopendds
  copying pyopendds/Qos.py -> build/lib.linux-x86_64-3.8/pyopendds
  copying pyopendds/DataWriter.py -> build/lib.linux-x86_64-3.8/pyopendds
  copying pyopendds/DataReader.py -> build/lib.linux-x86_64-3.8/pyopendds
  copying pyopendds/Topic.py -> build/lib.linux-x86_64-3.8/pyopendds
  copying pyopendds/Subscriber.py -> build/lib.linux-x86_64-3.8/pyopendds
  copying pyopendds/init_opendds.py -> build/lib.linux-x86_64-3.8/pyopendds
  copying pyopendds/util.py -> build/lib.linux-x86_64-3.8/pyopendds
  copying pyopendds/Publisher.py -> build/lib.linux-x86_64-3.8/pyopendds
  creating build/lib.linux-x86_64-3.8/pyopendds/dev
  copying pyopendds/dev/__init__.py -> build/lib.linux-x86_64-3.8/pyopendds/dev
  copying pyopendds/dev/cmake.py -> build/lib.linux-x86_64-3.8/pyopendds/dev
  creating build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
  copying pyopendds/dev/itl2py/__init__.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
  copying pyopendds/dev/itl2py/PythonOutput.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
  copying pyopendds/dev/itl2py/CppOutput.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
  copying pyopendds/dev/itl2py/itl.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
  copying pyopendds/dev/itl2py/generate.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
  copying pyopendds/dev/itl2py/ast.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
  copying pyopendds/dev/itl2py/Output.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
  copying pyopendds/dev/itl2py/__main__.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
  creating build/lib.linux-x86_64-3.8/pyopendds/dev/include
  creating build/lib.linux-x86_64-3.8/pyopendds/dev/include/pyopendds
  copying pyopendds/dev/include/pyopendds/common.hpp -> build/lib.linux-x86_64-3.8/pyopendds/dev/include/pyopendds
  copying pyopendds/dev/include/pyopendds/user.hpp -> build/lib.linux-x86_64-3.8/pyopendds/dev/include/pyopendds
  creating build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py/templates
  copying pyopendds/dev/itl2py/templates/CMakeLists.txt -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py/templates
  copying pyopendds/dev/itl2py/templates/user.cpp -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py/templates
  copying pyopendds/dev/itl2py/templates/user.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py/templates
  copying pyopendds/dev/itl2py/templates/setup.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py/templates
  running build_ext
  -- The C compiler identification is GNU 9.4.0
  -- The CXX compiler identification is GNU 9.4.0
  -- Detecting C compiler ABI info
  -- Detecting C compiler ABI info - done
  -- Check for working C compiler: /usr/bin/cc - skipped
  -- Detecting C compile features
  -- Detecting C compile features - done
  -- Detecting CXX compiler ABI info
  -- Detecting CXX compiler ABI info - done
  -- Check for working CXX compiler: /usr/bin/c++ - skipped
  -- Detecting CXX compile features
  -- Detecting CXX compile features - done
  -- Found Python3: /usr/local/include/python3.8 (found version "3.8.12") found components: Development Development.Module Development.Embed
  -- Looking for pthread.h
  -- Looking for pthread.h - found
  -- Performing Test CMAKE_HAVE_LIBC_PTHREAD
  -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
  -- Check if compiler accepts -pthread
  -- Check if compiler accepts -pthread - yes
  -- Found Threads: TRUE
  -- Configuring done
  -- Generating done
  -- Build files have been written to: /home/apsara/Videostreaming_v1/pyopendds_vs/build/temp.linux-x86_64-3.8
  [ 50%] Building CXX object CMakeFiles/_pyopendds.dir/_pyopendds.cpp.o
  [100%] Linking CXX shared library /home/apsara/Videostreaming_v1/pyopendds_vs/build/lib.linux-x86_64-3.8/_pyopendds.cpython-38-x86_64-linux-gnu.so
  /usr/bin/ld: /usr/local/lib/python3.8/config-3.8-x86_64-linux-gnu/libpython3.8.a(floatobject.o): relocation R_X86_64_PC32 against symbol `PyFloat_Type' can not be used when making a shared object; recompile with -fPIC
  /usr/bin/ld: final link failed: bad value
  collect2: error: ld returned 1 exit status
  make[2]: *** [CMakeFiles/_pyopendds.dir/build.make:106: /home/apsara/Videostreaming_v1/pyopendds_vs/build/lib.linux-x86_64-3.8/_pyopendds.cpython-38-x86_64-linux-gnu.so] Error 1
  make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/_pyopendds.dir/all] Error 2
  make: *** [Makefile:91: all] Error 2
  error: "cmake --build . --config Debug" returned non-zero result: 2
  ----------------------------------------
  ERROR: Failed building wheel for pyopendds
  Running setup.py clean for pyopendds
Failed to build pyopendds
Installing collected packages: pyopendds
    Running setup.py install for pyopendds ... error
    ERROR: Command errored out with exit status 1:
     command: /home/apsara/Videostreaming_v1/videnv/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/home/apsara/Videostreaming_v1/pyopendds_vs/setup.py'"'"'; __file__='"'"'/home/apsara/Videostreaming_v1/pyopendds_vs/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-5qh40bdn/install-record.txt --single-version-externally-managed --compile --install-headers /home/apsara/Videostreaming_v1/videnv/include/site/python3.8/pyopendds
         cwd: /home/apsara/Videostreaming_v1/pyopendds_vs/
    Complete output (84 lines):
    /home/apsara/Videostreaming_v1/videnv/lib/python3.8/site-packages/setuptools/dist.py:717: UserWarning: Usage of dash-separated 'author-email' will not be supported in future versions. Please use the underscore name 'author_email' instead
      warnings.warn(
    /home/apsara/Videostreaming_v1/videnv/lib/python3.8/site-packages/setuptools/dist.py:717: UserWarning: Usage of dash-separated 'home-page' will not be supported in future versions. Please use the underscore name 'home_page' instead
      warnings.warn(
    /home/apsara/Videostreaming_v1/videnv/lib/python3.8/site-packages/setuptools/dist.py:717: UserWarning: Usage of dash-separated 'long-description' will not be supported in future versions. Please use the underscore name 'long_description' instead
      warnings.warn(
    /home/apsara/Videostreaming_v1/videnv/lib/python3.8/site-packages/setuptools/dist.py:717: UserWarning: Usage of dash-separated 'long-description-content-type' will not be supported in future versions. Please use the underscore name 'long_description_content_type' instead
      warnings.warn(
    /home/apsara/Videostreaming_v1/videnv/lib/python3.8/site-packages/setuptools/dist.py:717: UserWarning: Usage of dash-separated 'license-file' will not be supported in future versions. Please use the underscore name 'license_file' instead
      warnings.warn(
    running install
    /home/apsara/Videostreaming_v1/videnv/lib/python3.8/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
      warnings.warn(
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-3.8
    creating build/lib.linux-x86_64-3.8/pyopendds
    copying pyopendds/DomainParticipant.py -> build/lib.linux-x86_64-3.8/pyopendds
    copying pyopendds/__init__.py -> build/lib.linux-x86_64-3.8/pyopendds
    copying pyopendds/exceptions.py -> build/lib.linux-x86_64-3.8/pyopendds
    copying pyopendds/constants.py -> build/lib.linux-x86_64-3.8/pyopendds
    copying pyopendds/Qos.py -> build/lib.linux-x86_64-3.8/pyopendds
    copying pyopendds/DataWriter.py -> build/lib.linux-x86_64-3.8/pyopendds
    copying pyopendds/DataReader.py -> build/lib.linux-x86_64-3.8/pyopendds
    copying pyopendds/Topic.py -> build/lib.linux-x86_64-3.8/pyopendds
    copying pyopendds/Subscriber.py -> build/lib.linux-x86_64-3.8/pyopendds
    copying pyopendds/init_opendds.py -> build/lib.linux-x86_64-3.8/pyopendds
    copying pyopendds/util.py -> build/lib.linux-x86_64-3.8/pyopendds
    copying pyopendds/Publisher.py -> build/lib.linux-x86_64-3.8/pyopendds
    creating build/lib.linux-x86_64-3.8/pyopendds/dev
    copying pyopendds/dev/__init__.py -> build/lib.linux-x86_64-3.8/pyopendds/dev
    copying pyopendds/dev/cmake.py -> build/lib.linux-x86_64-3.8/pyopendds/dev
    creating build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
    copying pyopendds/dev/itl2py/__init__.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
    copying pyopendds/dev/itl2py/PythonOutput.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
    copying pyopendds/dev/itl2py/CppOutput.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
    copying pyopendds/dev/itl2py/itl.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
    copying pyopendds/dev/itl2py/generate.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
    copying pyopendds/dev/itl2py/ast.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
    copying pyopendds/dev/itl2py/Output.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
    copying pyopendds/dev/itl2py/__main__.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
    creating build/lib.linux-x86_64-3.8/pyopendds/dev/include
    creating build/lib.linux-x86_64-3.8/pyopendds/dev/include/pyopendds
    copying pyopendds/dev/include/pyopendds/common.hpp -> build/lib.linux-x86_64-3.8/pyopendds/dev/include/pyopendds
    copying pyopendds/dev/include/pyopendds/user.hpp -> build/lib.linux-x86_64-3.8/pyopendds/dev/include/pyopendds
    creating build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py/templates
    copying pyopendds/dev/itl2py/templates/CMakeLists.txt -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py/templates
    copying pyopendds/dev/itl2py/templates/user.cpp -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py/templates
    copying pyopendds/dev/itl2py/templates/user.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py/templates
    copying pyopendds/dev/itl2py/templates/setup.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py/templates
    running build_ext
    -- The C compiler identification is GNU 9.4.0
    -- The CXX compiler identification is GNU 9.4.0
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Check for working C compiler: /usr/bin/cc - skipped
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Check for working CXX compiler: /usr/bin/c++ - skipped
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Found Python3: /usr/local/include/python3.8 (found version "3.8.12") found components: Development Development.Module Development.Embed
    -- Looking for pthread.h
    -- Looking for pthread.h - found
    -- Performing Test CMAKE_HAVE_LIBC_PTHREAD
    -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
    -- Check if compiler accepts -pthread
    -- Check if compiler accepts -pthread - yes
    -- Found Threads: TRUE
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /home/apsara/Videostreaming_v1/pyopendds_vs/build/temp.linux-x86_64-3.8
    [ 50%] Building CXX object CMakeFiles/_pyopendds.dir/_pyopendds.cpp.o
    [100%] Linking CXX shared library /home/apsara/Videostreaming_v1/pyopendds_vs/build/lib.linux-x86_64-3.8/_pyopendds.cpython-38-x86_64-linux-gnu.so
    /usr/bin/ld: /usr/local/lib/python3.8/config-3.8-x86_64-linux-gnu/libpython3.8.a(floatobject.o): relocation R_X86_64_PC32 against symbol `PyFloat_Type' can not be used when making a shared object; recompile with -fPIC
    /usr/bin/ld: final link failed: bad value
    collect2: error: ld returned 1 exit status
    make[2]: *** [CMakeFiles/_pyopendds.dir/build.make:106: /home/apsara/Videostreaming_v1/pyopendds_vs/build/lib.linux-x86_64-3.8/_pyopendds.cpython-38-x86_64-linux-gnu.so] Error 1
    make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/_pyopendds.dir/all] Error 2
    make: *** [Makefile:91: all] Error 2
    error: "cmake --build . --config Debug" returned non-zero result: 2
    ----------------------------------------
ERROR: Command errored out with exit status 1: /home/apsara/Videostreaming_v1/videnv/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/home/apsara/Videostreaming_v1/pyopendds_vs/setup.py'"'"'; __file__='"'"'/home/apsara/Videostreaming_v1/pyopendds_vs/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-5qh40bdn/install-record.txt --single-version-externally-managed --compile --install-headers /home/apsara/Videostreaming_v1/videnv/include/site/python3.8/pyopendds Check the logs for full command output.```
@iguessthislldo
Copy link
Member

Googling this error gives this gnuradio/gnuradio#4783 as one of the results. it seems that this is a problem when using a Python built from source, which it looks like you also have. It's not stated as a solution in the other issue, but I would suggest rebuilding Python with the --enable-shared configure option and reinstalling. Though I haven't knowingly tested this against a static Python library, I have used PyOpenDDS with Pythons built from source before without ever configuring it with --enable-shared, so there might be something more to it than that.

iguessthislldo added a commit to iguessthislldo/pyopendds that referenced this issue Mar 30, 2022
OpenDDS/OpenDDS#3315 changed where
generated files are placed. Will need probably need long term solution.

Also:
- Workaround diegoferigo/cmake-build-extension#29
- Clarify apparent issue in OpenDDS#39
@iguessthislldo iguessthislldo linked a pull request Mar 30, 2022 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants