Mac 編譯安裝 Swoole 遇到 .h 文件不存在問題解決方案

前言

?? ? ? 1. 其實我是真的沒想過安裝歷程會這么 emmm… 怎么描述呢,就是那種其實你要是說難也不難,但是就是也挺惡心,還有就是 mac 的本機自帶環境以及有些文件不自動加載引起的各種問題。

?? ? ? 2.還有就是,這樣的問題真的很少資料,所以記錄一下。


本機環境

Mac 編譯安裝 Swoole 遇到 .h 文件不存在問題解決方案
并且是 xcode 處于未安裝狀態。
本地自帶 php 版本 7.3
本地的環境配置工具,用的是 MxSrvs ,一款 Mac 版 PHP 開發環境。工具官網:http://www.xsrvs.com/ 工具雖小,但是五臟俱全,開發完全足夠。

重點問題

1. 出現找不到 PHP 的頭部文件

Mac 編譯安裝 Swoole 遇到 .h 文件不存在問題解決方案

2. 出現找不到 Openssl 的頭部文件(報錯信息跟 PHP 的差不多)

準備工作

官網需求
Mac 編譯安裝 Swoole 遇到 .h 文件不存在問題解決方案
?? ? ? 這里多說一句,雖然官方沒有標注 autoconf ?需要多少版本以上,但是編譯安裝的時候需要 2.68 及以上。

git 下載源碼包 http://www.xsrvs.com/,我下載的是
Mac 編譯安裝 Swoole 遇到 .h 文件不存在問題解決方案

安裝過程

?? ? ? 因為是本地,所以我就把下載的包直接進入控制臺目錄了,就不寫前面的什么CD目錄之類的了,然后運行下面的代碼,因為我要編譯到工具里的 PHP 版本中,所以用的是工具提供的 phpzie 。

/Applications/MxSrvs/bin/php/bin/phpize./configure?--enable-openssl?--enable-http2??make?&&?sudo?make?install

?? ? ? 不出意外的遇到了問題 1,這個問題,百度、必應 都沒找到相關的東西,然后問了一些群友,有的人說是因為版本太高的問題,說最合適 swoole 的版本是 7.2 版本。

?? ? ? 最終,指向問題本質的回答給了我靈感,大致的回答的意思是,從 macos 10.10 以后版本開始, Mac 自帶的 PHP 版本,取消了部分文件夾,也就是說,自帶的PHP 沒有編譯安裝所需要的文件

?? ? ? ?知道原因,其實就很好解決了,畢竟我們開發,沒有幾個用自帶環境的,所以,只需要考慮,怎么將工具使用的 PHP 版本,動態到系統環境變量即可。由于以前設置過系統環境變量路徑,稍微有點映象,就百度了設置環境變量的方法。
其實就是通過 .bash_profile 來設置環境變量
Mac 編譯安裝 Swoole 遇到 .h 文件不存在問題解決方案
但是,你重啟之后,每次都需要在命令行輸入

source?~/.bash_profile

來使之生效,這樣就比較麻煩,我們可以利用 Mac 自動加載 .zshrc 文件的機制,把

source?~/.bash_profile

添加到文件尾,使之每次不需要人工輸入。達到動態設置環境變量的目的。
Mac 編譯安裝 Swoole 遇到 .h 文件不存在問題解決方案
至此,第一個問題解決。

繼續第二次安裝,然后出現了第二個問題,解決這個問題,就比較繞了。
?? ? ?其實本質上遇到的問題都是同樣的,都是因為 Mac 自帶的軟件,都沒有這個 .h 的頭文件,所以才出現這些問題的,第一個問題,通過綁定到工具的變量,實現了變更環境變量,算是取巧的一個處理方法,openssl 這個擴展講道理還是用到的地方很多的,所以就安裝在自己的機器整體環境中。
?? ? ?在安裝 openssl 之前,需要先安裝 Xcode ,這一步,我沒有省去,好像在 Mac 上好多的環境變量都跟 Xcode 文件目錄掛鉤,著實惡心,但是也不能不安裝,安裝完之后,我們再安裝 openssl ,命令行輸入

brew?install?openssl

Mac 編譯安裝 Swoole 遇到 .h 文件不存在問題解決方案
如果檢測到你的已經存在,會提示你重新安裝可以運行

brew?reinstall?openssl@1.1

Mac 編譯安裝 Swoole 遇到 .h 文件不存在問題解決方案
其中有一句,就是讓把這個添加到

If?you?need?to?have?openssl@1.1?first?in?your?PATH?run:??echo?'export?PATH="/usr/local/opt/openssl@1.1/bin:$PATH"'?>>?~/.zshrc

把這個也添加之前修改過的 .zshrc 文件即可。
接下來就是重頭戲了。說白了就是簡單的粘貼復制,把 openssl 的文件夾,路徑為

/usr/local/Cellar/openssl@1.1/1.1.1h/include/openssl

復制到

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/

目錄下即可
至此,第二個問題解決。

然后再運行編譯 Swoole ,等待編譯完成就可以了
Mac 編譯安裝 Swoole 遇到 .h 文件不存在問題解決方案

成果

Mac 編譯安裝 Swoole 遇到 .h 文件不存在問題解決方案
Mac 編譯安裝 Swoole 遇到 .h 文件不存在問題解決方案

打完收工!

? 版權聲明
THE END
喜歡就支持一下吧
點贊6 分享