in reply to Re^3: Issue: Encode.so: undefined symbol: PL_utf8skip
in thread Issue: Encode.so: undefined symbol: PL_utf8skip

So basically when I investigate my output dynamic library - this is what I get:

ldd -v build/lib.linux-x86_64-3.4/pymechanize.cpython-34m.so

	linux-vdso.so.1 =>  (0x00007ffd157f3000)
	libperl.so.5.18 => /usr/lib/libperl.so.5.18 (0x00007f9632000000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f9631de2000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9631a1d000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9631819000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f9631513000)
	libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f96312da000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f96325b0000)

	Version information:
	build/lib.linux-x86_64-3.4/pymechanize.cpython-34m.so:
		libpthread.so.0 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libpthread.so.0
		libc.so.6 (GLIBC_2.3) => /lib/x86_64-linux-gnu/libc.so.6
		libc.so.6 (GLIBC_2.14) => /lib/x86_64-linux-gnu/libc.so.6
		libc.so.6 (GLIBC_2.4) => /lib/x86_64-linux-gnu/libc.so.6
		libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6
	/usr/lib/libperl.so.5.18:
		libdl.so.2 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libdl.so.2
		libcrypt.so.1 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libcrypt.so.1
		libm.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libm.so.6
		libpthread.so.0 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libpthread.so.0
		libc.so.6 (GLIBC_2.11) => /lib/x86_64-linux-gnu/libc.so.6
		libc.so.6 (GLIBC_2.14) => /lib/x86_64-linux-gnu/libc.so.6
		libc.so.6 (GLIBC_2.4) => /lib/x86_64-linux-gnu/libc.so.6
		libc.so.6 (GLIBC_2.3.4) => /lib/x86_64-linux-gnu/libc.so.6
		libc.so.6 (GLIBC_2.3) => /lib/x86_64-linux-gnu/libc.so.6
		libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6
	/lib/x86_64-linux-gnu/libpthread.so.0:
		ld-linux-x86-64.so.2 (GLIBC_2.2.5) => /lib64/ld-linux-x86-64.so.2
		ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
		ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2
		libc.so.6 (GLIBC_2.14) => /lib/x86_64-linux-gnu/libc.so.6
		libc.so.6 (GLIBC_2.3.2) => /lib/x86_64-linux-gnu/libc.so.6
		libc.so.6 (GLIBC_PRIVATE) => /lib/x86_64-linux-gnu/libc.so.6
		libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6
	/lib/x86_64-linux-gnu/libc.so.6:
		ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
		ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2
	/lib/x86_64-linux-gnu/libdl.so.2:
		ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2
		libc.so.6 (GLIBC_PRIVATE) => /lib/x86_64-linux-gnu/libc.so.6
		libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6
	/lib/x86_64-linux-gnu/libm.so.6:
		libc.so.6 (GLIBC_PRIVATE) => /lib/x86_64-linux-gnu/libc.so.6
		libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6
	/lib/x86_64-linux-gnu/libcrypt.so.1:
		libc.so.6 (GLIBC_2.14) => /lib/x86_64-linux-gnu/libc.so.6
		libc.so.6 (GLIBC_PRIVATE) => /lib/x86_64-linux-gnu/libc.so.6
		libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6
As you can see Encode.so link definition clearly shows a dependency to libperl.so and so is my library pymechanize.cpython-34m.so - but somehow my library do not seems to load and package libperl.so well during linkage - to make its required symbols available to dependable libraries such as encode. Strange one.
  • Comment on Re^4: Issue: Encode.so: undefined symbol: PL_utf8skip

Replies are listed 'Best First'.
Re^5: Issue: Encode.so: undefined symbol: PL_utf8skip
by Anonymous Monk on Jul 25, 2015 at 00:01 UTC

    As you can see Encode.so link definition clearly shows a dependency to libperl.so and so is my library pymechanize.cpython-34m.so - but somehow my library do not seems to load and package libperl.so well during linkage - to make its required symbols available to dependable libraries such as encode. Strange one.

    Yeah, its very odd that perl would run but then XSLoader would fail to find a symbol provided by libperl.so