Ubuntu (Karmic Koala) bir PHP uzantısı kitaplığı derleme

2 Cevap php

Ben a (C / C + +) iken geri, benim XP platformunda bazı PHP uzantısı kütüphanelerini hazırladı. Şimdi benim Ubuntu kutusuna kaynakları taşındı ve benim Linux kutusu üzerinde kullanım için kütüphanelerini oluşturmak istiyorsunuz.

Ancak, engellerin bir dizi rastlamak var:

  1. (Hatta php5dev paketini yükledikten sonra) phpize bulun olamaz
  2. Ben iskelet dosyası / dosyaları oluşturmak için ext_skel bulamıyorum

[Edit]

Pascal Martin ve this question sayesinde, benim küçük kütüphane, bir inşa ve test başarmışlardır. (Ben formatı aşina değilim çünkü) diğer kitaplıkları ile devam önce sadece benim. M4 dosyanın içeriğini kontrol etmek isteriz.

. Bu autogenerated m4 dosyanın içeriği - formatına aşina herkes, ve onlar bunun ne anlama geldiğini açıklayabilir - Ben dosyasının doğru bölümleri uncommented olması iki kat emin olabilirsiniz ki bu.

Config.m4 dosyanın içeriğini tüm kanlı detaylı olarak aşağıda gösterilmiştir:

dnl $Id$
dnl config.m4 for extension tanlib

dnl Comments in this file start with the string 'dnl'.
dnl Remove where necessary. This file will not work
dnl without editing.

dnl If your extension references something external, use with:

dnl PHP_ARG_WITH(tanlib, for tanlib support,
dnl Make sure that the comment is aligned:
dnl [  --with-tanlib             Include tanlib support])

dnl Otherwise use enable:

PHP_ARG_ENABLE(tanlib, whether to enable tanlib support,
dnl Make sure that the comment is aligned:
[  --enable-tanlib           Enable tanlib support])

if test "$PHP_TANLIB" != "no"; then
  dnl Write more examples of tests here...

  dnl # --with-tanlib -> check with-path
  dnl SEARCH_PATH="/usr/local /usr"     # you might want to change this
  dnl SEARCH_FOR="/include/tanlib.h"  # you most likely want to change this
  dnl if test -r $PHP_TANLIB/$SEARCH_FOR; then # path given as parameter
  dnl   TANLIB_DIR=$PHP_TANLIB
  dnl else # search default path list
  dnl   AC_MSG_CHECKING([for tanlib files in default path])
  dnl   for i in $SEARCH_PATH ; do
  dnl     if test -r $i/$SEARCH_FOR; then
  dnl       TANLIB_DIR=$i
  dnl       AC_MSG_RESULT(found in $i)
  dnl     fi
  dnl   done
  dnl fi
  dnl
  dnl if test -z "$TANLIB_DIR"; then
  dnl   AC_MSG_RESULT([not found])
  dnl   AC_MSG_ERROR([Please reinstall the tanlib distribution])
  dnl fi

  dnl # --with-tanlib -> add include path
  dnl PHP_ADD_INCLUDE($TANLIB_DIR/include)

  dnl # --with-tanlib -> check for lib and symbol presence
  dnl LIBNAME=tanlib # you may want to change this
  dnl LIBSYMBOL=tanlib # you most likely want to change this

  dnl PHP_CHECK_LIBRARY($LIBNAME,$LIBSYMBOL,
  dnl [
  dnl   PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $TANLIB_DIR/lib, TANLIB_SHARED_LIBADD)
  AC_DEFINE(HAVE_TANLIBLIB,1,[ Whether you have tanlib])
  dnl ],[
  dnl   AC_MSG_ERROR([wrong tanlib lib version or lib not found])
  dnl ],[
  dnl   -L$TANLIB_DIR/lib -lm -ldl
  dnl ])
  dnl
  dnl PHP_SUBST(TANLIB_SHARED_LIBADD)

  PHP_NEW_EXTENSION(tanlib, tanlib.c, $ext_shared)
fi 

Herkes yukarıdaki grok mu?

BTW, yukarıdaki config.m4 dosyası (Ben de sadece belgelere here gördük ve yavaş yavaş sindirerek yaşıyorum Autoconf 2.50 kullanılarak oluşturulmuştur.

2 Cevap

Benim Ubuntu bilgisayarda, phpize şöyledir:

$ which phpize
/usr/bin/phpize


And ext_skel should be in the "ext" directory, in the PHP sources, which you can get by SVN.

Here's the ext directory : http://svn.php.net/viewvc/php/php-src/trunk/ext/
And you can view the content of the script here.

README.EXT_SKEL is just under trunk/.


If you're more of a git user, there is a mirror of the SVN on github : http://github.com/php/

Lütfen izlem soruyu yanıtlamak için, dnl .m4 dosyalarındaki çizgi açıklama belirtecidir, bu yüzden bu hatları şu anda hiçbir şey yapmıyorlar. Eğer (ve --with-myextension yapılandırma seçeneğini kullanmak yerine kongre tarafından --enable-myextension). Harici bir kütüphaneyi kullanarak eğer onlar çoğunlukla sadece alakalı madem ki, muhtemelen Tamam

(Revizyon 3 itibariyle) Yukarıdaki dosya nedenle eşdeğerdir:

PHP_ARG_ENABLE(tanlib, whether to enable tanlib support,
[  --enable-tanlib           Enable tanlib support])

if test "$PHP_TANLIB" != "no"; then
  AC_DEFINE(HAVE_TANLIBLIB,1,[ Whether you have tanlib])  
  PHP_NEW_EXTENSION(tanlib, tanlib.c, $ext_shared)
fi 

Eğer bu dizinde aşağıdaki yoksa Yani, o iş (Ben bu kontrol etmek için el uygun bir Linux makine yok, düşünmek) olmalıdır:

phpize
./configure --enable-tanlib
make
make install

Nihayet, uzatma /etc/php5/conf.d etkin olduğundan emin olun.

(sudo /etc/init.d/apache2 restart) herhangi bir uzantısı değişiklikleri almak için apache yeniden başlatmanız gerekir unutmayın.