這章節(jié)搜集了很多編譯時會產(chǎn)生的錯誤情況。 1. 我用匿名CVS得到最新版的源代碼包, 但沒有配置腳本文件! 2. 我在配置 PHP 在 Apache下工作時出了問題。 它說不能找到 httpd.h, 可是我 " /> 毛片无遮挡高清免费观看,有码 在线,欧美在线观看不卡

一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

編譯問題


這章節(jié)搜集了很多編譯時會產(chǎn)生的錯誤情況。 1. 我用匿名CVS得到最新版的源代碼包, 但沒有配置腳本文件! 2. 我在配置 php 在 Apache下工作時出了問題。 它說不能找到 httpd.h, 可是我看它就在那里! 3. 當(dāng)我運行conifgure時,它說它不能找到include文件或 一些庫: GD, gdbm, 或其它的一些包! 4. 我在編譯文件 language-parser.tab.c時, 出錯,提示: yytname undeclared. 5. 當(dāng)我運行 make, 起初正常但 最終失敗了,在連接最后的應(yīng)用時,出錯說找不到一些文件。 6. 在連接 php 時, 出一堆錯說 undefined references。 7. 我不清楚怎樣在 Apache 1.3下編譯php。 8. 我按照步驟一步一步安裝了Apache模塊(Unix下), 可是在瀏覽器里打開 php 腳本時它卻問我是否要保存。 9. 系統(tǒng)說使用: --activate-module=src/modules/php4/libphp4.a, 可那文件根本不存在, 我只好改成 --activate-module=src/modules/php4/libmodphp4.a 好了,它不工作了! 該怎么辦? 10. 我要把php編譯成Apache的靜態(tài)模塊,用: --activate-module=src/modules/php4/libphp4.a 可是系統(tǒng)說我的編譯器不是 ANSI 兼容的。 11. 我用 --with-apxs編譯php時, 我總是得到一些奇怪的錯誤。 12. 在 make時, 我得到很多關(guān)于microtime錯誤, 還有許多 RUSAGE_ stuff. 13. 我想升級php,我在哪可以看到我現(xiàn)在運行的php 的當(dāng)初配置安裝時所使用的./configure 一行的內(nèi)容? 14. 編譯帶GD庫的php時,它不是給一些奇怪的錯, 就是執(zhí)行時產(chǎn)生 segfaults 段錯誤.
1. 我用匿名CVS得到最新版的源代碼包, 但沒有配置腳本文件!
你必須安裝 GNU autoconf 包,這樣可以從 configure.in生成配置腳本文件. 只要運行在CVS服務(wù)器得到源代碼的頂級目錄下的 ./buildconf。 (注意, 除非你運行configure --enable-maintainer-mode 選項, 配置腳本是不會重新生成, 即使configure.in 文件已更新, 所以當(dāng)你發(fā)現(xiàn) configure.in 改變了,你也要手工做一遍. 在config或config.status 運行后應(yīng)該在你的Makefile里能看到象@VARIABLE@這樣的標(biāo)號。)
2. 我在配置 php 在 Apache下工作時出了問題。 它說不能找到 httpd.h, 可是我看它就在那里!
你要告訴 configure/setup 腳本 Apache 的頂級目錄的位置。 就是說你要標(biāo)明 --with-apache=/path/to/apache , 而不是 --with-apache=/path/to/apache/src.
3. 當(dāng)我運行conifgure時,它說它不能找到include文件或 一些庫: GD, gdbm, 或其它的一些包!
你可以看看 configure 腳本,那些頭文件或非標(biāo)準(zhǔn)庫的位置,要送一些特殊的標(biāo)志給C預(yù)處理器。例如: CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure假如你的shell使用 csh-variant , 那么它將會是 (為什么?): env CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure
4. 我在編譯文件 language-parser.tab.c時, 出錯,提示: yytname undeclared.
你需要更新你的 Bison 版本. 你可以在 ftp://ftp.gnu.org/pub/gnu/bison/找到最新版本.
5. 當(dāng)我運行 make, 起初正常但 最終失敗了,在連接最后的應(yīng)用時,出錯說找不到一些文件。
一些老版本的 make 不能把 functions 目錄下的編譯的文件放到同一個目錄下, 試著運行 cp *.o functions 然后再運行 make 看看是否會好些。 如果好了,你真的應(yīng)該更新你的GNU Make的版本了。
6. 在連接 php 時, 出一堆錯說 undefined references。
看看文件里的連接行,確認(rèn)所有的相關(guān)包都已經(jīng)正確包含。通常這樣是因為缺少'-ldl',還有一些你想支持的數(shù)據(jù)庫包。
如果你是在連接到 Apache 1.2.x, 你記得要在在EXTRA_LIBS 行增加一些額外的信息 并且重運行 Apache's Configure 腳本嗎? 參見發(fā)行包里的 INSTALL 文件。
很多人說他們一增加 '-ldl' 馬上得到了 libphp4.a 。
7. 我不清楚怎樣在 Apache 1.3下編譯php
事實上很簡單,按下面的步驟:

取得 Apache 1.3 源代碼,在下面的位置 http://www.apache.org/dist/.
在某個目錄下解壓出來, 如 /usr/local/src/apache-1.3.
php的發(fā)行包目錄下,編譯 php ,./configure --with-apache=/<path>/apache-1.3 ( 用戶實際的apache-1.3目錄位置替代 <path> .
打入: make 然后: make install 編譯php,拷必須的文件到Apache目錄下。
改變到你的 /<path>/apache-1.3/src 目錄,編輯 Configuration文件. 把下面的行增加到文件里: AddModule modules/php4/libphp4.a.
打入: ./Configure 然后: make.
這樣你就有了一個 httpd 文件!

注意:你也可以使用新的Apache ./configure 腳本. 見發(fā)行包里的 README.configure 當(dāng)然也要看看php發(fā)行包里的 INSTALL 文件。
8. 我按照步驟一步一步安裝了Apache模塊(Unix下), 可是在瀏覽器里打開 php 腳本時它卻問我是否要保存。
這意味著你的php模塊沒有被加載。你可從下面三點來檢查:

確認(rèn)你運行的Httpd是你剛剛編譯了php的Httpd. 可以運行: /path/to/binary/httpd -l
如果你沒有看到 mod_php4.c 列出來,那么你運行了不正確的Httpd. 最好重新安裝它。
確認(rèn)你在 Apache .conf 文件里增加了正確的Mime 類型.它應(yīng)該是這樣: AddType application/x-httpd-php3 .php3 ( php 3)
或 AddType application/x-httpd-php .php ( php 4)
也保證 AddType 這行沒有包括在 <Virtualhost> 或 <Directory> 塊里,它們會使它無效。
最后, Apache 1.2 和 Apache 1.3默認(rèn)的配置文件的位置是不同的. 你應(yīng)該檢查你增加了AddType行的配置文件的位置 . 你可以在 httpd.conf 放一些明顯的錯誤或改變,這樣如果這文件被讀的話,系統(tǒng)會通知你。

9. 系統(tǒng)說使用: --activate-module=src/modules/php4/libphp4.a, 可那文件根本不存在, 我只好改成 --activate-module=src/modules/php4/libmodphp4.a 好了,它不工作了! 該怎么辦?
請注意 libphp4.a 事實并不存在. apache 進(jìn)程會創(chuàng)建它!
10. 我要把php編譯成Apache的靜態(tài)模塊,用: --activate-module=src/modules/php4/libphp4.a 可是系統(tǒng)說我的編譯器不是 ANSI 兼容的。
這個錯誤消息是 Apache 誤導(dǎo)的,可以用更新版本來修正它。
11. 我用 --with-apxs編譯php時, 我總是得到一些奇怪的錯誤。
出現(xiàn)這樣的情況可以從三點來檢查. 第一, 因為某種原因,Apache 在編譯apxs Perl 腳本的時候, 它沒有創(chuàng)建適當(dāng)?shù)臉?biāo)志變量, 找到你的apxs腳本 (試試命令 which apxs, 通常在 /usr/local/apache/bin/apxs or /usr/sbin/apxs. 打開它找到象下面這樣的行: my $CFG_CFLAGS_SHLIB  = ' ';          # substituted via Makefile.tmplmy $CFG_LD_SHLIB      = ' ';          # substituted via Makefile.tmplmy $CFG_LDFLAGS_SHLIB = ' ';          # substituted via Makefile.tmpl如果你看到的是這樣,那么問題就出在這里. 因為值里包含的是空格或其它不正確的值, 如 'q()'. 把它樣變成象下面的那樣: my $CFG_CFLAGS_SHLIB  = '-fpic -DSHARED_MODULE'; # substituted via Makefile.tmplmy $CFG_LD_SHLIB      = 'gcc';                   # substituted via Makefile.tmplmy $CFG_LDFLAGS_SHLIB = q(-shared);              # substituted via Makefile.tmpl第二種可能僅僅出現(xiàn)在Red Hat 6.1 和 6.2上. apxs 腳本 Red Hat 版有錯. 看這行: my $CFG_LIBEXECDIR    = 'modules';         # substituted via APACI install如果你看到了,就把它改成下面的行: my $CFG_LIBEXECDIR    = '/usr/lib/apache'; # substituted via APACI install第三, 你要是 重配置/重安裝 Apache, 必須在 ./configure 后,在 make之前,執(zhí)行make clean
12. 在 make時, 我得到很多關(guān)于microtime錯誤, 還有許多 RUSAGE_ stuff.
在安裝過程中 make時,如果你看到下面的錯: microtime.c: In function `php_if_getrusage':microtime.c:94: storage size of `usg' isn't knownmicrotime.c:97: `RUSAGE_SELF' undeclared (first use in this function)microtime.c:97: (Each undeclared identifier is reported only oncemicrotime.c:97: for each function it appears in.)microtime.c:103: `RUSAGE_CHILDREN' undeclared (first use in this function)make[3]: *** [microtime.lo] Error 1make[3]: Leaving directory `/home/master/php-4.0.1/ext/standard'make[2]: *** [all-recursive] Error 1make[2]: Leaving directory `/home/master/php-4.0.1/ext/standard'make[1]: *** [all-recursive] Error 1make[1]: Leaving directory `/home/master/php-4.0.1/ext'make: *** [all-recursive] Error 1
那是你的系統(tǒng)出錯了. 你應(yīng)該修復(fù) /usr/include 文件.具體做法是安裝和你的glibc匹配的glibc-devel 包. 這些錯絕對和php無關(guān),為了證明,你可以這樣做: $ cat >test.c <<X#include <sys/resource.h>X$ gcc -E test.c >/dev/null如果出錯,證明你的包含文件受損了.
13. 我想升級php,我在哪可以看到我現(xiàn)在運行的php 的當(dāng)初配置安裝時所使用的./configure 一行的內(nèi)容.?
你可以看你安裝php源目錄下的 config.nice 文件. 如果不行還有另外一種方法.你只要簡單運行 <?php phpinfo(); ?>腳本. 在輸出頁面的第一行,就是 ./configure 行, 是你當(dāng)初用來配置php的那行.
14. 編譯帶GD庫的php時,它不是給一些奇怪的錯, 就是執(zhí)行時產(chǎn)生 segfaults 段錯誤.
你必須確認(rèn)你在編譯 GD 庫 和 php 時所使用同樣的依賴庫 (例如 libpng). 

php技術(shù)編譯問題,轉(zhuǎn)載需保留來源!

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

主站蜘蛛池模板: 成人三级在线播放 | 国产一区二区三区在线视频 | 亚洲一区二区中文 | 青草国产在线观看 | 国产精品亚洲自在线播放页码 | 欧美福利小视频 | www.久久99 | 午夜在线观看视频在线播放版 | 成年人黄色网址 | 看全色黄大色黄大片免责看 | 国产一在线 | 中文字幕国产一区 | 欧美黄色大片免费观看 | 成人午夜性视频欧美成人 | 天天干天天插天天 | 韩国一级永久免费观看网址 | 最新在线观看精品国产福利片 | 色av.com| 国产人成精品综合欧美成人 | 欧美高清亚洲欧美一区h | 亚洲国产精品成人综合色在线婷婷 | 欧美激情一区 | 久久久青草青青亚洲国产免观 | 国产精品白浆在线播放 | 国产三级网站在线观看 | 99国产精品免费视频观看 | 午夜神马视频 | 午夜精品在线 | 国产精品久久久久久久久岛 | 欧美怡红院免费全视频 | 日韩午夜在线观看 | 婷婷社区五月天 | 狼人久久尹人香蕉尹人 | 亚洲人色大成年网站在线观看 | 91福利刘玥国产在线观看 | 久久噜国产精品拍拍拍拍 | 激情一区二区三区 | www.黄色.con| 四虎影视色费永久在线观看 | 亚洲激情小视频 | 国产视频福利在线 |