問題概述
在項目使用到了分佈式文件服務器FastDFS,FastDFS的Tracker Server 和 Storage Server 安裝完成後,需要外部的 Web Server來提供訪問,有人可能會疑問,爲什麼不使用FastDFS內部的Web Server呢,我的另一篇文章非常詳細的闡述了這個問題,請參看 《 FastDFS分佈式文件系統內部架構及其原理解析 》
這兒使用的是FastDFS的Nginx擴展模塊,但是在Nginx編譯時出現了錯誤,“ fatal error: common_define.h: No such file or directory ”
如下圖:
解決辦法
經過了系統的排查,最終得知,在安裝FastDFS的時候,其中的函數聲明、宏定義、函數原型被指到了 “ /usr/include/fastdfs /usr/include/fastcommon ” 目錄下,如下圖:
而Nginx的擴展模塊配置文件默認指定的目錄爲 “ /usr/include ”,找不到文件,才導致的上面的錯誤 “ 致命錯誤: common_define.h 的文件或目錄不存在 ” ,解決這個問題,只需要將Nginx擴展模塊的路徑目錄修改爲上面正常的 “ /usr/include/fastdfs ” 即可,輸入命令 “ vi /usr/local/fastdfs-nginx-module/src/config ” ,總共修改兩項即可:
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
》》》
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
缺省的:
ngx_addon_name=ngx_http_fastdfs_module
if test -n "${ngx_module_link}"; then
ngx_module_type=HTTP
ngx_module_name=$ngx_addon_name
ngx_module_incs="/usr/include"
ngx_module_libs="-lfastcommon -lfdfsclient"
ngx_module_srcs="$ngx_addon_dir/ngx_http_fastdfs_module.c"
ngx_module_deps=
CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"
. auto/module
else
HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c"
CORE_INCS="$CORE_INCS /usr/include"
CORE_LIBS="$CORE_LIBS -lfastcommon -lfdfsclient"
CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"
fi
修改後的:
ngx_addon_name=ngx_http_fastdfs_module
if test -n "${ngx_module_link}"; then
ngx_module_type=HTTP
ngx_module_name=$ngx_addon_name
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
ngx_module_libs="-lfastcommon -lfdfsclient"
ngx_module_srcs="$ngx_addon_dir/ngx_http_fastdfs_module.c"
ngx_module_deps=
CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"
. auto/module
else
HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
CORE_LIBS="$CORE_LIBS -lfastcommon -lfdfsclient"
CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"
fi
現在再去編譯安裝Nginx就可以了。
好了,關於 fatal error: common_define.h: No such file or directory 的解決辦法 就寫到這兒了,如果還有什麼疑問或遇到什麼問題歡迎掃碼提問,也可以給我留言哦,我會一一詳細的解答的。
歇後語:“ 共同學習,共同進步 ”,也希望大家多多關注CSND的IT社區。
作 者: | 華 仔 |
聯繫作者: | [email protected] |
來 源: | CSDN (Chinese Software Developer Network) |
原 文: | https://blog.csdn.net/Hello_World_QWP/article/details/95318414 |
版權聲明: | 本文爲博主原創文章,請在轉載時務必註明博文出處! |