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

unable to compile on arch linux with python 3.8 #518

Closed
jose1711 opened this issue Nov 17, 2019 · 6 comments
Closed

unable to compile on arch linux with python 3.8 #518

jose1711 opened this issue Nov 17, 2019 · 6 comments

Comments

@jose1711
Copy link

..
config.status: creating pc/vapoursynth.pc
config.status: creating pc/vapoursynth-script.pc
config.status: creating Makefile
config.status: executing depfiles commands
config.status: executing libtool commands
  CXX      src/vspipe/vspipe.o
  CXX      src/vsscript/libvapoursynth_script_la-vsscript.lo
  CXXLD    libvapoursynth-script.la
  CXXLD    vspipe
/usr/bin/ld: ./.libs/libvapoursynth-script.so: undefined reference to `Py_InitializeEx'
/usr/bin/ld: ./.libs/libvapoursynth-script.so: undefined reference to `PyDict_GetItemString'
/usr/bin/ld: ./.libs/libvapoursynth-script.so: undefined reference to `PyObject_GetAttrString'
/usr/bin/ld: ./.libs/libvapoursynth-script.so: undefined reference to `_Py_Dealloc'
/usr/bin/ld: ./.libs/libvapoursynth-script.so: undefined reference to `PyImport_ImportModule'
/usr/bin/ld: ./.libs/libvapoursynth-script.so: undefined reference to `PyCapsule_GetPointer'
/usr/bin/ld: ./.libs/libvapoursynth-script.so: undefined reference to `PyCapsule_IsValid'
/usr/bin/ld: ./.libs/libvapoursynth-script.so: undefined reference to `PyEval_SaveThread'
/usr/bin/ld: ./.libs/libvapoursynth-script.so: undefined reference to `PyGILState_Ensure'
/usr/bin/ld: ./.libs/libvapoursynth-script.so: undefined reference to `Py_IsInitialized'
collect2: error: ld returned 1 exit status
make: *** [Makefile:1324: vspipe] Error 1

this is an attempt to compile vapoursynth from aur (https://aur.archlinux.org/packages/vapoursynth-git/).

$ pacman -Q python
python 3.8.0-1
@myrsloik
Copy link
Member

Do you have a more verbose log? It looks like it's not picking up the python library at all judging by the error.

@jose1711
Copy link
Author

here is the output of the failing command with --verbose added

/usr/bin/ld --verbose -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/lto-wrapper -plugin-opt=-fresolution=/tmp/ccWygwlP.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o .libs/vspipe /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0 -L/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../.. -O1 --sort-common --as-needed -z relro -z now src/vspipe/vspipe.o ./.libs/libvapoursynth-script.so -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/crtn.o
GNU ld (GNU Binutils) 2.33.1
  Supported emulations:
   elf_x86_64
   elf32_x86_64
   elf_i386
   elf_iamcu
   elf_l1om
   elf_k1om
   i386pep
   i386pe
using internal linker script:
==================================================
/* Script for -pie -z combreloc -z now -z relro -z separate-code: position independent executable, combine & sort relocs with separate code segment */
/* Copyright (C) 2014-2019 Free Software Foundation, Inc.
   Copying and distribution of this script, with or without modification,
   are permitted in any medium without royalty provided the copyright
   notice and this notice are preserved.  */
OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64",
	      "elf64-x86-64")
OUTPUT_ARCH(i386:x86-64)
ENTRY(_start)
SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib64"); SEARCH_DIR("/usr/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib");
SECTIONS
{
  PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
  .interp         : { *(.interp) }
  .note.gnu.build-id  : { *(.note.gnu.build-id) }
  .hash           : { *(.hash) }
  .gnu.hash       : { *(.gnu.hash) }
  .dynsym         : { *(.dynsym) }
  .dynstr         : { *(.dynstr) }
  .gnu.version    : { *(.gnu.version) }
  .gnu.version_d  : { *(.gnu.version_d) }
  .gnu.version_r  : { *(.gnu.version_r) }
  .rela.dyn       :
    {
      *(.rela.init)
      *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
      *(.rela.fini)
      *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
      *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
      *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
      *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
      *(.rela.ctors)
      *(.rela.dtors)
      *(.rela.got)
      *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
      *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*)
      *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*)
      *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*)
      *(.rela.ifunc)
    }
  .rela.plt       :
    {
      *(.rela.plt)
      *(.rela.iplt)
    }
  . = ALIGN(CONSTANT (MAXPAGESIZE));
  .init           :
  {
    KEEP (*(SORT_NONE(.init)))
  }
  .plt            : { *(.plt) *(.iplt) }
.plt.got        : { *(.plt.got) }
.plt.sec        : { *(.plt.sec) }
  .text           :
  {
    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
    *(.text.exit .text.exit.*)
    *(.text.startup .text.startup.*)
    *(.text.hot .text.hot.*)
    *(.text .stub .text.* .gnu.linkonce.t.*)
    /* .gnu.warning sections are handled specially by elf32.em.  */
    *(.gnu.warning)
  }
  .fini           :
  {
    KEEP (*(SORT_NONE(.fini)))
  }
  PROVIDE (__etext = .);
  PROVIDE (_etext = .);
  PROVIDE (etext = .);
  . = ALIGN(CONSTANT (MAXPAGESIZE));
  /* Adjust the address for the rodata segment.  We want to adjust up to
     the same address within the page on the next page up.  */
  . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)));
  .rodata         : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
  .rodata1        : { *(.rodata1) }
  .eh_frame_hdr   : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) }
  .eh_frame       : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) }
  .gcc_except_table   : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) }
  .gnu_extab   : ONLY_IF_RO { *(.gnu_extab*) }
  /* These sections are generated by the Sun/Oracle C++ compiler.  */
  .exception_ranges   : ONLY_IF_RO { *(.exception_ranges*) }
  /* Adjust the address for the data segment.  We want to adjust up to
     the same address within the page on the next page up.  */
  . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
  /* Exception handling  */
  .eh_frame       : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) }
  .gnu_extab      : ONLY_IF_RW { *(.gnu_extab) }
  .gcc_except_table   : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) }
  .exception_ranges   : ONLY_IF_RW { *(.exception_ranges*) }
  /* Thread Local Storage sections  */
  .tdata	  :
   {
     PROVIDE_HIDDEN (__tdata_start = .);
     *(.tdata .tdata.* .gnu.linkonce.td.*)
   }
  .tbss		  : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
  .preinit_array    :
  {
    PROVIDE_HIDDEN (__preinit_array_start = .);
    KEEP (*(.preinit_array))
    PROVIDE_HIDDEN (__preinit_array_end = .);
  }
  .init_array    :
  {
    PROVIDE_HIDDEN (__init_array_start = .);
    KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*)))
    KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors))
    PROVIDE_HIDDEN (__init_array_end = .);
  }
  .fini_array    :
  {
    PROVIDE_HIDDEN (__fini_array_start = .);
    KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*)))
    KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors))
    PROVIDE_HIDDEN (__fini_array_end = .);
  }
  .ctors          :
  {
    /* gcc uses crtbegin.o to find the start of
       the constructors, so we make sure it is
       first.  Because this is a wildcard, it
       doesn't matter if the user does not
       actually link against crtbegin.o; the
       linker won't look for a file to match a
       wildcard.  The wildcard also means that it
       doesn't matter which directory crtbegin.o
       is in.  */
    KEEP (*crtbegin.o(.ctors))
    KEEP (*crtbegin?.o(.ctors))
    /* We don't want to include the .ctor section from
       the crtend.o file until after the sorted ctors.
       The .ctor section from the crtend file contains the
       end of ctors marker and it must be last */
    KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
    KEEP (*(SORT(.ctors.*)))
    KEEP (*(.ctors))
  }
  .dtors          :
  {
    KEEP (*crtbegin.o(.dtors))
    KEEP (*crtbegin?.o(.dtors))
    KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
    KEEP (*(SORT(.dtors.*)))
    KEEP (*(.dtors))
  }
  .jcr            : { KEEP (*(.jcr)) }
  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
  .dynamic        : { *(.dynamic) }
  .got            : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) }
  . = DATA_SEGMENT_RELRO_END (0, .);
  .data           :
  {
    *(.data .data.* .gnu.linkonce.d.*)
    SORT(CONSTRUCTORS)
  }
  .data1          : { *(.data1) }
  _edata = .; PROVIDE (edata = .);
  . = .;
  __bss_start = .;
  .bss            :
  {
   *(.dynbss)
   *(.bss .bss.* .gnu.linkonce.b.*)
   *(COMMON)
   /* Align here to ensure that the .bss section occupies space up to
      _end.  Align after .bss to ensure correct alignment even if the
      .bss section disappears because there are no input sections.
      FIXME: Why do we need it? When there is no .bss section, we do not
      pad the .data section.  */
   . = ALIGN(. != 0 ? 64 / 8 : 1);
  }
  .lbss   :
  {
    *(.dynlbss)
    *(.lbss .lbss.* .gnu.linkonce.lb.*)
    *(LARGE_COMMON)
  }
  . = ALIGN(64 / 8);
  . = SEGMENT_START("ldata-segment", .);
  .lrodata   ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) :
  {
    *(.lrodata .lrodata.* .gnu.linkonce.lr.*)
  }
  .ldata   ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) :
  {
    *(.ldata .ldata.* .gnu.linkonce.l.*)
    . = ALIGN(. != 0 ? 64 / 8 : 1);
  }
  . = ALIGN(64 / 8);
  _end = .; PROVIDE (end = .);
  . = DATA_SEGMENT_END (.);
  /* Stabs debugging sections.  */
  .stab          0 : { *(.stab) }
  .stabstr       0 : { *(.stabstr) }
  .stab.excl     0 : { *(.stab.excl) }
  .stab.exclstr  0 : { *(.stab.exclstr) }
  .stab.index    0 : { *(.stab.index) }
  .stab.indexstr 0 : { *(.stab.indexstr) }
  .comment       0 : { *(.comment) }
  .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) }
  /* DWARF debug sections.
     Symbols in the DWARF debugging sections are relative to the beginning
     of the section so we begin them at 0.  */
  /* DWARF 1 */
  .debug          0 : { *(.debug) }
  .line           0 : { *(.line) }
  /* GNU DWARF 1 extensions */
  .debug_srcinfo  0 : { *(.debug_srcinfo) }
  .debug_sfnames  0 : { *(.debug_sfnames) }
  /* DWARF 1.1 and DWARF 2 */
  .debug_aranges  0 : { *(.debug_aranges) }
  .debug_pubnames 0 : { *(.debug_pubnames) }
  /* DWARF 2 */
  .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
  .debug_abbrev   0 : { *(.debug_abbrev) }
  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end) }
  .debug_frame    0 : { *(.debug_frame) }
  .debug_str      0 : { *(.debug_str) }
  .debug_loc      0 : { *(.debug_loc) }
  .debug_macinfo  0 : { *(.debug_macinfo) }
  /* SGI/MIPS DWARF 2 extensions */
  .debug_weaknames 0 : { *(.debug_weaknames) }
  .debug_funcnames 0 : { *(.debug_funcnames) }
  .debug_typenames 0 : { *(.debug_typenames) }
  .debug_varnames  0 : { *(.debug_varnames) }
  /* DWARF 3 */
  .debug_pubtypes 0 : { *(.debug_pubtypes) }
  .debug_ranges   0 : { *(.debug_ranges) }
  /* DWARF Extension.  */
  .debug_macro    0 : { *(.debug_macro) }
  .debug_addr     0 : { *(.debug_addr) }
  .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
  /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
}


==================================================
/usr/bin/ld: mode elf_x86_64
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/Scrt1.o succeeded
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/Scrt1.o
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/crti.o succeeded
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/crti.o
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/crtbeginS.o succeeded
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/crtbeginS.o
attempt to open src/vspipe/vspipe.o succeeded
src/vspipe/vspipe.o
attempt to open ./.libs/libvapoursynth-script.so succeeded
./.libs/libvapoursynth-script.so
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/libstdc++.so failed
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/libstdc++.a failed
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/libstdc++.so succeeded
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/libstdc++.so
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/libm.so failed
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/libm.a failed
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/libm.so succeeded
opened script file /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/libm.so
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/libm.so
opened script file /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/libm.so
attempt to open /usr/lib/libm.so.6 succeeded
/usr/lib/libm.so.6
attempt to open /usr/lib/libmvec_nonshared.a succeeded
/usr/lib/libmvec_nonshared.a
attempt to open /usr/lib/libmvec.so.1 succeeded
/usr/lib/libmvec.so.1
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/libgcc_s.so failed
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/libgcc_s.a failed
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/libgcc_s.so succeeded
opened script file /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/libgcc_s.so
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/libgcc_s.so
opened script file /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/libgcc_s.so
attempt to open libgcc_s.so.1 failed
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/libgcc_s.so.1 failed
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/libgcc_s.so.1 succeeded
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/libgcc_s.so.1
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/libgcc.so failed
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/libgcc.a succeeded
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/libgcc.a
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/libgcc.a
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/libgcc.so failed
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/libgcc.a succeeded
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/libgcc.a
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/libc.so failed
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/libc.a failed
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/libc.so succeeded
opened script file /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/libc.so
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/libc.so
opened script file /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/libc.so
attempt to open /usr/lib/libc.so.6 succeeded
/usr/lib/libc.so.6
attempt to open /usr/lib/libc_nonshared.a succeeded
/usr/lib/libc_nonshared.a
(/usr/lib/libc_nonshared.a)elf-init.oS
attempt to open /usr/lib/ld-linux-x86-64.so.2 succeeded
/usr/lib/ld-linux-x86-64.so.2
/usr/lib/libc_nonshared.a
/usr/lib/ld-linux-x86-64.so.2
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/libgcc_s.so failed
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/libgcc_s.a failed
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/libgcc_s.so succeeded
opened script file /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/libgcc_s.so
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/libgcc_s.so
opened script file /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/libgcc_s.so
attempt to open libgcc_s.so.1 failed
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/libgcc_s.so.1 failed
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/libgcc_s.so.1 succeeded
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/libgcc_s.so.1
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/libgcc.so failed
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/libgcc.a succeeded
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/libgcc.a
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/libgcc.so failed
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/libgcc.a succeeded
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/libgcc.a
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/crtendS.o succeeded
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/crtendS.o
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/crtn.o succeeded
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/crtn.o
libm.so.6 needed by ./.libs/libvapoursynth-script.so
found libm.so.6 at /usr/lib/libm.so.6
ld-linux-x86-64.so.2 needed by ./.libs/libvapoursynth-script.so
found ld-linux-x86-64.so.2 at /usr/lib/ld-linux-x86-64.so.2
/usr/bin/ld: ./.libs/libvapoursynth-script.so: undefined reference to `Py_InitializeEx'
/usr/bin/ld: ./.libs/libvapoursynth-script.so: undefined reference to `PyDict_GetItemString'
/usr/bin/ld: ./.libs/libvapoursynth-script.so: undefined reference to `PyObject_GetAttrString'
/usr/bin/ld: ./.libs/libvapoursynth-script.so: undefined reference to `_Py_Dealloc'
/usr/bin/ld: ./.libs/libvapoursynth-script.so: undefined reference to `PyImport_ImportModule'
/usr/bin/ld: ./.libs/libvapoursynth-script.so: undefined reference to `PyCapsule_GetPointer'
/usr/bin/ld: ./.libs/libvapoursynth-script.so: undefined reference to `PyCapsule_IsValid'
/usr/bin/ld: ./.libs/libvapoursynth-script.so: undefined reference to `PyEval_SaveThread'
/usr/bin/ld: ./.libs/libvapoursynth-script.so: undefined reference to `PyGILState_Ensure'
/usr/bin/ld: ./.libs/libvapoursynth-script.so: undefined reference to `Py_IsInitialized'
/usr/bin/ld: link errors found, deleting executable `.libs/vspipe'

@myrsloik
Copy link
Member

myrsloik commented Nov 25, 2019

Actually by pure coincidence someone mentioned the cause of this. It's python 3.8 very awkwardly changing what you have to do to link with it. See the --embed switch which got added in 3.8 just to break everything...
https://docs.python.org/3/whatsnew/3.8.html#debug-build-uses-the-same-abi-as-release-build

This will probably be fixed in the next release.

@insilications
Copy link

Adding the output of python3-config --libs --embed: -lpython3.8 -lcrypt -lpthread -ldl -lutil -lm -lm

To the appropriate places in the makefile fixes this.

@jnozsc
Copy link

jnozsc commented May 29, 2020

sorry for bumping this
@insilications , may I know where did you modify? I think I may met the same issue

@dubhater
Copy link

@jnozsc You can just run make LIBS="$(python3-config --ldflags --embed)". No need to edit anything.

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

No branches or pull requests

5 participants