亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

Ubuntu64位系統xampp環境編譯32位php擴展庫

2020-03-22 19:34:10
字體:
來源:轉載
供稿:網友
  • 由于項目需要,需要php調用c語言的庫,由于環境系統是64位,但是php卻是32位,因此需要編譯出32位的庫,本文在之前的文章Ubuntu 下php調用c語言.so文件基礎上修改完成。

    首先寫一個php模塊(php extension),在php中調用該模塊內的函數,再通過該模塊來調用so中的函數。

    首先做一個簡單的so文件:

    /**
     * hello.c
     * To compile, use following commands:
     *   gcc -O -c -fPIC -o hello.o hello.c  -m32
     *   gcc -shared -o libhello.so hello.o -m32
     */
     
    int hello_add(int a, int b)
    {
        return a + b;
    }

    然后將它編譯成.so文件并放到系統中:

    $ gcc -O -c -fPIC -o hello.o hello.c -m32
    $ gcc -shared -o libhello.so hello.o -m32
    $ su
    # echo /usr/local/lib > /etc/ld.so.conf.d/local.conf  
    # cp libhello.so /usr/local/lib
    # /sbin/ldconfig

    寫段小程序來驗證其正確性:

    /**
     * hellotest.c
     * To compile, use following commands:
     *   gcc -o hellotest -lhello hellotest.c -m32
     */
    #include <stdio.h>
    int main()
    {
        int a = 3, b = 4;
        printf("%d + %d = %d/n", a, b, hello_add(a,b));
        return0;
    }

    編譯并執行:

    $ gcc -o hellotest -lhello hellotest.c -m32
    $ ./hellotest
    3 + 4 = 7

    經測試。在Ubuntu12.04上無法通過編譯,但在Ubuntu14.10上可以編譯,在Centos下正常編譯,見下圖,但是不影響后面的使用

    下面我們制作PHP模塊。由于基于xampp,所以php5-dev不裝,直接使用/opt/lampp/bin目錄下的命令即可。

    然后下載php源代碼。我使用的是php-5.2.3.tar.gz,解壓縮。

    $ wget http://eduunix.ccut.edu.cn/index2/php/php/php-5.3.6.tar.gz
    $ tar xzvf php-5.3.6.tar.gz
    $ cd php-5.3.6/ext

    然后通過下面的命令建立一個名為 hello的模塊。

    $ ./ext_skel --extname=hello

    執行該命令之后它會提示你應當用什么命令來編譯模塊,可惜那是將模塊集成到php內部的編譯方法。如果要編譯成可動態加載的 php_hello.so,方法要更為簡單。

    $ cd hello

    首先編輯 config.m4 文件,去掉第16行和第18行的注釋(注釋符號為 dnl)

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

    然后執行 phpize5 程序,生成configure腳本:

    $ /opt/lampp/bin/phpize

    然后打開 php_hello.h,在 PHP_FUNCTION(confirm_hello_compiled); 之下加入函數聲明:

    PHP_FUNCTION(confirm_hello_compiled);   /* For testing, remove later. */
    PHP_FUNCTION(hello_add);

    打開 hello.c,在 PHP_FE(confirm_hello_compiled, NULL) 下方加入以下內容。

    zend_function_entry hello_functions[] = {
        PHP_FE(confirm_hello_compiled,  NULL)       /* For testing, remove later. */
        PHP_FE(hello_add,   NULL)       /* For testing, remove later. */
        {NULL, NULL, NULL}  /* Must be the last line in hello_functions[] */
    };

    然后在 hello.c 的最末尾書寫hello_add函數的內容:

    PHP_FUNCTION(hello_add)
    {
        longint a, b;
        longint result;
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &a, &b) == FAILURE) {
            return;
    }
        result = hello_add(a, b);
        RETURN_LONG(result);
    }

    保存退出,編譯并安裝:

    $ CFLAGS=-m32 CPPFLAGS=-m32 CCASFLAGS=-m32 ./configure --with-php-config=/opt/lampp/bin/php-config
    $ make LDFLAGS=-lhello
    $ make test (測試是否正常安裝)
    $ sudo make install 此命令會將so放在php的擴展文件去

    編輯php的配置文件加載so庫

    $ vim /opt/lampp/etc/php.ini
    找到extension部分,加入extension=hello.so,重啟xampp
    $ /opt/lampp/lampp restart

    然后在 /var/www/ 下建立一個 hello.php 文件,內容如下:

    <?php
        echo hello_add(3, 4);
    ?>

    然后在瀏覽器中打開hello.php文件,如果顯示7,則說明函數調用成功了。

    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
    久久精品国产一区二区三区| 国产精品久久综合av爱欲tv| 中文字幕最新精品| 日韩av影视综合网| 日韩极品精品视频免费观看| 亚洲精品国精品久久99热一| 日韩亚洲欧美成人| 久久久国产精品免费| 亚洲第一视频在线观看| 国产亚洲精品久久久久久| 欧美激情性做爰免费视频| 高清一区二区三区日本久| 亚洲欧美日韩在线高清直播| 亚洲成av人片在线观看香蕉| 欧美电影在线观看| 丝袜美腿亚洲一区二区| www.日韩视频| 亚洲xxxx视频| 国产精品羞羞答答| 国产一区二区三区18| 国产欧美一区二区三区在线| 久久精品一本久久99精品| 欧美成人国产va精品日本一级| 日韩欧美亚洲范冰冰与中字| 久久久久九九九九| 国产区精品视频| 欧美多人爱爱视频网站| 韩国三级日本三级少妇99| 亚洲国产精品久久91精品| 中文字幕亚洲一区二区三区五十路| 91亚洲精华国产精华| 91高清在线免费观看| 91精品国产精品| 欧美成人午夜激情在线| 欧美性jizz18性欧美| 日韩高清免费观看| 国产欧美精品一区二区三区-老狼| 精品国产区一区二区三区在线观看| 91亚洲精品视频| 成人在线播放av| 第一福利永久视频精品| 91精品啪aⅴ在线观看国产| 国产91色在线| 亚洲成人动漫在线播放| 欧美裸体xxxx极品少妇软件| 国产精品成人v| 综合激情国产一区| 久久久久久久久久久久久久久久久久av| 久久久伊人日本| 亚洲一区二区在线播放| 国产精品69久久久久| 欧美精品久久久久久久久久| 亚洲人成免费电影| 91精品免费久久久久久久久| 精品久久久久久中文字幕一区奶水| 国内偷自视频区视频综合| 国产日韩综合一区二区性色av| 久久久精品网站| 日韩大陆毛片av| 国产精品久久久久99| 日韩中文字幕在线播放| 91欧美日韩一区| 欧美在线一区二区视频| 最好看的2019年中文视频| 亚洲一区二区三区四区在线播放| 91大神在线播放精品| 亚洲成人在线网| 亚洲电影成人av99爱色| 国产精品91免费在线| 久久久久久久久爱| 91麻豆国产语对白在线观看| 日韩中文字幕国产| 久久久人成影片一区二区三区| 久久久欧美精品| 最近的2019中文字幕免费一页| 不卡av在线播放| 精品亚洲一区二区三区| 国产综合久久久久| 亚洲视频综合网| 亚洲片在线资源| 日韩成人av网| 国产成人精品免高潮在线观看| 日韩视频在线免费观看| 国产精品69精品一区二区三区| 亚洲国产精品一区二区三区| 国产精品91视频| 日韩精品在线观看网站| 播播国产欧美激情| 欧美精品videosex极品1| 亚洲性69xxxbbb| 欧美精品一本久久男人的天堂| 久久久久久中文| 国产成人福利视频| 性欧美办公室18xxxxhd| 欧美老女人在线视频| 中文字幕亚洲图片| 黑人极品videos精品欧美裸| 欧美激情第6页| 亚洲高清色综合| 51精品国产黑色丝袜高跟鞋| 欧洲美女免费图片一区| 中文字幕精品久久久久| 91在线观看免费观看| 久久综合免费视频影院| 国产suv精品一区二区| 欧美激情videoshd| 亚洲va码欧洲m码| 91精品国产高清自在线| 国产在线视频欧美| 日韩欧美在线免费观看| 久久久99免费视频| 中文国产成人精品| 97精品在线观看| 日韩欧美高清视频| 欧美午夜美女看片| wwwwwwww亚洲| www.亚洲一区| 97碰在线观看| 美女扒开尿口让男人操亚洲视频网站| 日韩电影在线观看永久视频免费网站| 精品成人国产在线观看男人呻吟| 97视频国产在线| 欧美福利小视频| 国产精品网红直播| www国产亚洲精品久久网站| 国产精品福利在线观看| 亚洲欧美日韩久久久久久| 欧美午夜性色大片在线观看| 青青青国产精品一区二区| 亚洲欧美一区二区三区久久| 色综合天天狠天天透天天伊人| 日韩高清a**址| 亚洲欧美在线免费| 亚洲综合在线做性| 久久精品电影一区二区| 国产视频久久久| 国产精品视频白浆免费视频| 欧美日本高清视频| 国产一区二区三区18| 欧美激情二区三区| 欧美亚洲伦理www| 中文字幕亚洲一区| 国产一区二区三区视频| 国产婷婷色综合av蜜臀av| 国产香蕉精品视频一区二区三区| 不卡av在线网站| 色中色综合影院手机版在线观看| 在线视频精品一| 国产成人鲁鲁免费视频a| 亚洲午夜未满十八勿入免费观看全集| www.午夜精品| 免费av一区二区| 91精品国产91久久久久久最新| 精品小视频在线| 成人性生交xxxxx网站| 亚洲高清一区二| 丝袜亚洲欧美日韩综合| 一本一本久久a久久精品牛牛影视| 国产精品久久久久久亚洲影视| 日韩精品高清视频| 最近2019中文字幕大全第二页| 色琪琪综合男人的天堂aⅴ视频| 在线日韩欧美视频| 国产丝袜视频一区|