3

64 ビット システムで 32 ビット PHP インストール用の PHP 拡張機能をコンパイルしようとしています。ただし、Apache を再起動すると、次の警告が表示されます。

Warning: PHP Startup: Unable to load dynamic library '/opt/lampp/lib/php/extensions/no-debug-non-zts-20090626/spotify.so' - /opt/lampp/lib/php/extensions/no-debug-non-zts-20090626/spotify.so: wrong ELF class: ELFCLASS64 in Unknown on line 0

このコマンドを使用してすべてをコンパイルします。

/opt/lampp/bin/phpize; CFLAGS=-m32 CPPFLAGS=-m32 CCASFLAGS=-m32 ./configure --enable-spotify --with-php-config=/opt/lampp/bin/php-config; make && make install

フラグは、32 ビットにコンパイルされることを確認する必要があります。私は持っgcc-multilibg++-multilibインストールしました

コンパイルが完了したら (このログ: http://pastebin.com/MqgGgyzv )、次のコマンドを実行します。

file /opt/lampp/lib/php/extensions/no-debug-non-zts-20090626/spotify.so

そしてそれは戻ってきます

/opt/lampp/lib/php/extensions/no-debug-non-zts-20090626/spotify.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped

したがって、明らかに正しくコンパイルされていませんが、何が間違っているのかわかりません。

4

1 に答える 1

2

コンパイルは正常に行われていますが、リンカが誤って 64 ビットの .so を作成しています。

解決策は、LDFLAGS にも「-m32」を含めることです。

https://askubuntu.com/questions/85978/building-a-32-bit-app-in-64-bit-ubuntu

于 2012-04-08T21:22:07.683 に答える