2012-04-08 56 views
3

我正試圖編譯64位系統上的32位PHP安裝的PHP擴展。不過,我得到的時候重啓Apache以下警告:將64位Debian上的PHP擴展編譯爲32位PHP安裝

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 

所以這顯然是不正確編譯它,但我沒有看到我做錯了什麼。

+1

嘗試這種解決方案。這個對我有用。 >如何在使用32位XAMPP時在64位Linux上安裝PECL PHP擴展http://montenasoft.com/zh-CN/blog/how-install-pecl-php-extension-64bit-linux-while-you-are-using- 32bit-xampp – 2012-12-20 16:53:00

回答

2

你是編譯好的,但連接器是無意中創建一個64位.so。

的解決方案是在您的LDFLAGS 「-m32」,太:

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

+0

試着用這個'/ 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',但我仍然得到錯誤的文件類型。 這是現在返回的日誌:http://pastebin.com/UKshaH27 – 2012-04-08 21:45:06