1

我需要一個獨立的獨立於系統庫的PHP版本,才能將其作爲包含二進制文件的.zip文件進行分發。以前,.zip包含libxml2.so.2,libpng12.so.0,php.ini和php可執行文件。 最近我需要添加一些功能並重新編譯PHP。如何編譯PHP以使其獨立於系統庫?

./configure \ 
    --prefix=/home/user/php/out \ 
    --libdir=. \ 
    --enable-static=YES \ 
    --enable-shared=NO \ 
    --with-pdo_mysql \ 
    --with-gd \ 
    --with-mysql \ 
    --enable-zip \ 
    --enable-zend-multibyte \ 
    --enable-cgi \ 
    --enable-fastcgi \ 
    --with-ldap=shared 
make && make install 

然後,我把PHP從出/ bin和libmysqlclient.so.16從/ usr/lib中/:我做到了。但新的PHP不想拿起圖書館。一旦我運行它,我得到以下錯誤:

./php: error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or directory 

libmysqlclient.so.16和php是在同一目錄中。如果我把libmysqlclient.so.16放到/ usr/lib中,php工作正常。

編譯過程中是否還有其他選項我已經遺忘?爲什麼不是「--libdir =」。選項工作?

回答

2

首先,指令是--with-libdir而不是--libdir。其次,我認爲它相對於/usr,因此將.表示您需要將共享庫放入/usr

如果您使用共享庫完成了任何C編碼,您必須知道約ld。處理共享庫路徑的最簡單方法是使用ld

您可以設置庫路徑的電流(殼)會議:

bash-4.1$ export LD_LIBRARY_PATH=/path/to/your/libs 

您還可以配置ld做這一切的時候:

bash-4.1$ echo /path/to/your/libs >> /etc/ld.so.conf 
bash-4.1$ ldconfig 
+0

這是剛夠用'LD_LIBRARY_PATH = \'PWD \'/ php'開始PHP - 謝謝您的回答。 – ssobczak 2010-12-16 10:18:52