摘要:再次搜索,得到原因分析通過(guò)運(yùn)行測(cè)試程序來(lái)獲得等數(shù)據(jù)類型的大小,由于交叉編譯器所編譯出的程序無(wú)法在編譯主機(jī)上運(yùn)行而產(chǎn)生錯(cuò)誤。
首先安裝以下庫(kù):
// 貌似一起安裝 apt-cyg 不能識(shí)別,得一個(gè)一個(gè)得安裝,有些庫(kù)貌似沒(méi)找到 // apt-cyg install openssl pcre zlib automake bison curl-devel flex libiconv libmcrypt-devel libtool libxml2 libxml2-devel patchutils pcre-devel jpeg libmcrypt
配置
./configure --with-http_ssl_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module
報(bào)錯(cuò):
./configure: error: can not detect int size cat: objs/autotest.c: No such file or directory
搜索解決方法:
去掉CPU優(yōu)化編譯選項(xiàng):–with-cpu-opt=pentium
無(wú)效,本來(lái)就沒(méi)有加。。。
再次搜索,得到
原因分析:
configure通過(guò)運(yùn)行測(cè)試程序來(lái)獲得“int、long、longlong”等數(shù)據(jù)類型的大小,由于交叉編譯器所編譯出的程序無(wú)法在編譯主機(jī)上運(yùn)行而產(chǎn)生錯(cuò)誤。解決辦法:
可以通過(guò)修改configure文件來(lái)手動(dòng)指定各數(shù)據(jù)類型的大小,但會(huì)非常麻煩。
這里,由于編譯主機(jī)與目標(biāo)平臺(tái)均為32位系統(tǒng),故可以用 gcc 替代 mips-openwrt-linux-gcc 來(lái)進(jìn)行數(shù)據(jù)類型大小的測(cè)試
(注意:不同的編譯環(huán)境可能編譯器有點(diǎn)不同)
編輯auto/types/sizeof文件,大概36行的位置( $CC 改為 gcc )
ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS
改為
ngx_test="gcc $CC_TEST_FLAGS $CC_AUX_FLAGS
修改后測(cè)試錯(cuò)誤仍然存在,上述修改無(wú)效。
又找了一些方案:
增加參數(shù)跳過(guò)錯(cuò)誤:
--with-ld-opt="-lstdc++" --with-cpp_test_module
仍然無(wú)效,估計(jì)是 nginx 版本太高(用的是 GitHub 上最新的),降低版本試試。
嘗試1.2.4版本。
這時(shí)發(fā)現(xiàn)有些重要的庫(kù)沒(méi)有安裝(因?yàn)椴皇?C 出身,對(duì)編譯幾乎一竅不通),偷偷地安裝了下:
apt-cyg install gcc-g++
1.2.4 版本有一些友好的提示,在提示下安裝了以下庫(kù):
apt-cyg install libpcre-devel apt-cyg install openssl-devel
再次 configure,顯示
Configuration summary + using system PCRE library + using system OpenSSL library + md5: using OpenSSL library + sha1: using OpenSSL library + using system zlib library nginx path prefix: "/usr/local/nginx" nginx binary file: "/usr/local/nginx/sbin/nginx" nginx configuration prefix: "/usr/local/nginx/conf" nginx configuration file: "/usr/local/nginx/conf/nginx.conf" nginx pid file: "/usr/local/nginx/logs/nginx.pid" nginx error log file: "/usr/local/nginx/logs/error.log" nginx http access log file: "/usr/local/nginx/logs/access.log" nginx http client request body temporary files: "client_body_temp" nginx http proxy temporary files: "proxy_temp" nginx http fastcgi temporary files: "fastcgi_temp" nginx http uwsgi temporary files: "uwsgi_temp" nginx http scgi temporary files: "scgi_temp"
通過(guò)。
下面 make,最終提示:
objs/ngx_modules.o -lcrypt -lpcre -lssl -lcrypto -lz make[1]: Leaving directory "/home/Tony/source/nginx-1.2.4" make -f objs/Makefile manpage make[1]: Entering directory "/home/Tony/source/nginx-1.2.4" sed -e "s|%%PREFIX%%|/usr/local/nginx|" -e "s|%%PID_PATH%%|/usr/local/nginx/logs/nginx.pid|" -e "s|%%CONF_PATH%%|/usr/local/nginx/conf/nginx.conf|" -e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx/logs/error.log|" < man/nginx.8 > objs/nginx.8 make[1]: Leaving directory "/home/Tony/source/nginx-1.2.4"
貌似應(yīng)該是成功了。
最后 make install,提示:
Tony@TPX240 ~/source/nginx-1.2.4 $ make install make -f objs/Makefile install make[1]: Entering directory "/home/Tony/source/nginx-1.2.4" test -d "/usr/local/nginx" || mkdir -p "/usr/local/nginx" test -d "/usr/local/nginx/sbin" || mkdir -p "/usr/local/nginx/sbin" test ! -f "/usr/local/nginx/sbin/nginx" || mv "/usr/local/nginx/sbin/nginx" "/usr/local/nginx/sbin/nginx.old" cp objs/nginx "/usr/local/nginx/sbin/nginx" test -d "/usr/local/nginx/conf" || mkdir -p "/usr/local/nginx/conf" cp conf/koi-win "/usr/local/nginx/conf" cp conf/koi-utf "/usr/local/nginx/conf" cp conf/win-utf "/usr/local/nginx/conf" test -f "/usr/local/nginx/conf/mime.types" || cp conf/mime.types "/usr/local/nginx/conf" cp conf/mime.types "/usr/local/nginx/conf/mime.types.default" test -f "/usr/local/nginx/conf/fastcgi_params" || cp conf/fastcgi_params "/usr/local/nginx/conf" cp conf/fastcgi_params "/usr/local/nginx/conf/fastcgi_params.default" test -f "/usr/local/nginx/conf/fastcgi.conf" || cp conf/fastcgi.conf "/usr/local/nginx/conf" cp conf/fastcgi.conf "/usr/local/nginx/conf/fastcgi.conf.default" test -f "/usr/local/nginx/conf/uwsgi_params" || cp conf/uwsgi_params "/usr/local/nginx/conf" cp conf/uwsgi_params "/usr/local/nginx/conf/uwsgi_params.default" test -f "/usr/local/nginx/conf/scgi_params" || cp conf/scgi_params "/usr/local/nginx/conf" cp conf/scgi_params "/usr/local/nginx/conf/scgi_params.default" test -f "/usr/local/nginx/conf/nginx.conf" || cp conf/nginx.conf "/usr/local/nginx/conf/nginx.conf" cp conf/nginx.conf "/usr/local/nginx/conf/nginx.conf.default" test -d "/usr/local/nginx/logs" || mkdir -p "/usr/local/nginx/logs" test -d "/usr/local/nginx/logs" || mkdir -p "/usr/local/nginx/logs" test -d "/usr/local/nginx/html" || cp -R html "/usr/local/nginx" test -d "/usr/local/nginx/logs" || mkdir -p "/usr/local/nginx/logs" make[1]: Leaving directory "/home/Tony/source/nginx-1.2.4"
因?yàn)槲?Win 本地也配置了 Nginx,所以用 whereis 命令查看 Nginx 的時(shí)候出現(xiàn)以下情況:
Tony@TPX240 ~/source/nginx-1.2.4 $ whereis nginx nginx: /usr/local/nginx /cygdrive/c/dev/nginx.bat /cygdrive/c/dev/nginx-1.2.3/nginx.exe
nginx -v 出來(lái)的版本號(hào)也是 1.2.3 (Win 本地的版本號(hào))
但寫全路徑就可以看到 1.2.4,說(shuō)明安裝成功,下面看下能不能跑。
$ /usr/local/nginx/sbin/nginx.exe -v nginx version: nginx/1.2.4
看到一個(gè)參數(shù)比較全的配置:
./configure --prefix=/cygdrive/d/nginx --sbin-path=/cygdrive/d/nginx --with-cc-opt="-D FD_SETSIZE=4096" --with-rtsig_module --with-select_module --with-poll_module --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-mail --with-cpp_test_module--with-mail_ssl_module make && make install
運(yùn)行 nginx,出現(xiàn)錯(cuò)誤:
$ /usr/local/nginx/sbin/nginx.exe nginx: [emerg] the maximum number of files supported by select() is 64
表示FD_SETSIZE的值比nginx配置文件中worker_connections指令所指定的值,你可以把 nginx.conf 里的 worker_connections 選項(xiàng)改小一些,比如44,加了 --with-cc-opt="-D FD_SETSIZE=4096" 后就不會(huì)碰到這問(wèn)題
我的 nginx.conf 文件在 /usr/local/nginx/conf/nginx.conf
改為 64后,nginx 正常啟動(dòng)。
參考文章:
http://www.softwareprojects.c...
http://blog.csdn.net/fish4323...
http://blog.csdn.net/chenyuji...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/39120.html
摘要:寫在前面的話每次在搭建環(huán)境都要一頓求參考文檔,這次索性寫個(gè)簡(jiǎn)單的文章記錄一下。其實(shí)下編譯安裝主要就是這幾個(gè)步驟。這樣指定后以后配置使用也方便。 寫在前面的話 每次在Linux搭建web環(huán)境都要一頓google求參考文檔,這次索性寫個(gè)簡(jiǎn)單的文章記錄一下。其實(shí)Linux下編譯安裝主要就是這幾個(gè)步驟。 安裝編譯工具、依賴包及下載源碼包 解壓編譯 安裝 啟動(dòng) 準(zhǔn)備工作 安裝編譯工具、依賴包...
摘要:寫在前面的話每次在搭建環(huán)境都要一頓求參考文檔,這次索性寫個(gè)簡(jiǎn)單的文章記錄一下。其實(shí)下編譯安裝主要就是這幾個(gè)步驟。這樣指定后以后配置使用也方便。 寫在前面的話 每次在Linux搭建web環(huán)境都要一頓google求參考文檔,這次索性寫個(gè)簡(jiǎn)單的文章記錄一下。其實(shí)Linux下編譯安裝主要就是這幾個(gè)步驟。 安裝編譯工具、依賴包及下載源碼包 解壓編譯 安裝 啟動(dòng) 準(zhǔn)備工作 安裝編譯工具、依賴包...
閱讀 3706·2021-11-11 11:00
閱讀 2184·2021-10-08 10:05
閱讀 2693·2021-10-08 10:04
閱讀 3213·2021-09-30 09:48
閱讀 3788·2021-09-27 14:10
閱讀 1709·2021-09-09 09:33
閱讀 2103·2019-08-30 15:55
閱讀 1606·2019-08-30 13:53