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源碼目錄下運行
$ ./configure

然后在objs里,打開Makefile,

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

把該段的 ./config 改成 ./Configure darwin64-x86_64-cc 其他后面參數不變,保存

然后再make就編譯通過了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM