Nginx 安裝 (mac os) 錯誤 ld: symbol(s) not found for architecture x86_64

今天在mac os 上編譯安裝Nginx時候,報錯:ld: symbol(s) not found for architecture x86_64, 通過一番折騰以後發現,因爲Nginx依賴openssl庫,查看openssl的./config 文件發現,這個問題應該是 openssl/config腳本猜對你的系統是64位,可是 會根據$KERNEL_BITS來判斷是否開啓x86_64編譯,默認不開啓,他會給你5秒時間確認是否中止編譯,手動設置x86_64編譯,因此默認你生成的openssl庫文件是32位的,最後靜態連接到nginx會出錯。目前看來沒有很好的方法把x86_64的參數傳到openssl配置文件中 (openssl/config 猜想os架構,設置編譯的參數是32位仍是64位,默認是32位,而後調用openssl/Configure生成Makefile),nginx

解決辦法就是:架構

先運行nginx源碼目錄下運行
$ ./configuressl

而後在objs裏,打開Makefile,源碼

找到: ./config --prefix=xxx.openssl no-shared        (註釋:XXX是已存在的openssl源碼路徑)openssl

把該段的 ./config 改爲 ./Configure darwin64-x86_64-cc 其餘後面參數不變,保存it

而後再make就編譯經過了編譯

相關文章
相關標籤/搜索