【问题标题】:Compile PHP extension on 64bit debian to 32bit PHP installation将 64 位 debian 上的 PHP 扩展编译为 32 位 PHP 安装
【发布时间】:2012-04-08 21:16:08
【问题描述】:

我正在尝试为 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

所以它显然没有正确编译它,但我看不出我做错了什么。

【问题讨论】:

  • 试试这个解决方案。这个对我有用。 > 如何在使用 32 位 XAMPP 时在 64 位 linux 上安装 PECL PHP 扩展montenasoft.com/en/blog/…

标签: php php-extension


【解决方案1】:

编译没问题,但是链接器无意中创建了一个64位的.so。

解决方案是在您的 LDFLAGS 中也包含“-m32”:

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

【讨论】:

  • 尝试了这个/opt/lampp/bin/phpize; CXXFLAGS=-m32 CFLAGS=-m32 CPPFLAGS=-m32 CCASFLAGS=-m32 LDFLAGS=-m32 ./configure --enable-spotify --with-php-config=/opt/lampp/bin/php-config; make && make install,但我仍然得到错误的文件类型。这是现在返回的日志:pastebin.com/UKshaH27
猜你喜欢
  • 1970-01-01
  • 2013-07-05
  • 2014-10-20
  • 2018-08-04
  • 2013-03-11
  • 1970-01-01
  • 2011-11-11
  • 2012-01-02
  • 1970-01-01
相关资源
最近更新 更多