derickr/vld

VLD is invalid library on Alpine

Closed this issue ยท 5 comments

Strange things happen on Alpine Linux (Docker) ๐Ÿ˜•
It works fine on Windows and Debian.

PHP: from source/package.
VLD: from source (VLD_0_14_0).

How can I help (debug) for you?

# uname -a
Linux 3.16.0-4-amd64 #1 SMP Debian 3.16.39-1 (2016-12-30) x86_64 Linux

# php -v
PHP 7.1.6 (cli) (built: Jun 12 2017 21:23:32) ( NTS )

# php -dextension=vld.so
PHP Warning:  PHP Startup: Invalid library (maybe not a PHP library) 'vld.so' in Unknown on line 0

How did you build vld?

What is in vld.so? Try "file vld.so" (in the right path) and "head vld.so" (in the right path).

Thanks for the quick reply.

git clone -o VLD_0_14_0 --depth 1 https://github.com/derickr/vld.git /tmp/vld
cd /tmp/vld
phpize
./configure
make
make install
# /usr/local/lib/php/extensions/no-debug-non-zts-20160303

# file vld.so
sh: file: not found

# head vld.so > /vld_head.log

vld_head.log (sorry for Dropbox)

Btw,
Alpine uses musl as its libc; musl isn't 100% compatible with glibc, hence the missing symbols.

# file vld.so
sh: file: not found

You do need to install "file" for that to work :-)

But at least the "head" looks like that it is a shared object (ELF) file.

Alpine uses musl as its libc; musl isn't 100% compatible with glibc, hence the missing symbols.

You didn't include these in your report, and they are important to see.

Oh, Alpine and me. Sorry ๐Ÿ˜Š

# file ./vld.so
./vld.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped
# ldd ./vld.so
ldd (0x7f17f725c000)
libc.musl-x86_64.so.1 => ldd (0x7f17f725c000)

I meant the missing symbols! I need to figure out what musl misses.