/usr/include/fastdfs/fdfs_define.h:15:27: fatal error: common_define.h: No such file or 的解決辦法

問題概述

在項目使用到了分佈式文件服務器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
版權聲明: 本文爲博主原創文章,請在轉載時務必註明博文出處!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章