一 概述:mysql
本文說述的是在蘋果機器上搭建Apache模塊開發環境的方法,選用的IDE是QT Creator。實質上,我最開初是選用CodeBlocks進行搭建,而且搭建成功了。但CodeBlocks當前的13.12版本在Mac的機器上很不穩定(CodeBlocks官網就特別地說明過這一點)。我使用時發現其啓動較慢,運行過程當中總是閃退等問題,因而才改用QT Creator。這裏要聲明的是,我在Windows及Linux上使用CodeBlocks,其表現很穩定,功能也是很強的,因此我才第一個選他。本文並不會涉及Apache的安裝及其開發工具的安裝。由於Mac系統自己已經自帶了Apache及其開發工具。若是有朋友想CodeBlocks搭建Apache模塊開發環境,能夠在這裏留個言。sql
本文後記補充了在ubuntu上搭建環境時的注意點。
shell
二 需求描述apache
* (Mac)OS X Yosemite 版本 10.10.2ubuntu
系統自帶Apache版本: Server version: Apache/2.4.9 (Unix)安全
* Qt Creator 3.5.1 (opensource)bash
* Xcode Version 6.4 (6E35b)工具
這個是在「App Store」下載的。開發工具
核心需求就是,搭建一個Apache模塊開發的IDE.
三 實現方法
3.1 apxs建立目標工程
apxs是Apache開發的重要工具,可用來自動生成基本的工程。由於系統已經自帶了該工具,因此咱們能夠直接在終端調用以下命令:
apxs -n helloapache -g
-n 用於指定工程名,「helloapache」就是具體的工程名
-g 用來生成工程所需的最基本的文件。
(注:請用小寫字母指定工程名,這樣能夠省去一些沒必要要的麻煩)
命令執行完畢後,會在當前目錄生成一個名爲「helloapache」的子目錄。其內容是一個Apache版的HelloWorld工程。請cd進入helloapache子目錄,並執行命令:
make
若是,默認的配置正確make命令會順利地把模塊編譯出來。惋惜的是個人默認設置並不正確:)
首先報錯,有工具找不到,因而用find命令找這些工具:
find / -name "***"
"***"表明工具文件名。結果發現默認生成的Makefile中,以下兩個路徑變量設置有問題:
top_srcdir=/usr top_builddir=/usr
在個人系統中正確的設置應該是:
top_srcdir=/usr/share/httpd top_builddir=/usr/share/httpd
編譯報錯,找不到httpd.h/apr.h等文件。
個人解決方法是,缺什麼文件就用find命令找什麼文件:
find / -name "***.h"
結果發現默認生成的Makefile中,Include的頭文件目錄不是很全,因此我補上了以下的目錄
ADD_INCLUDE=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include INCLUDES=-I$(ADD_INCLUDE)/apache2 \ -I$(ADD_INCLUDE)/apr-1 \ -I$(ADD_INCLUDE)
最後是默認的環境中也有問題:
多是由於個人Xcode升級了,C語言編譯器的路徑有所變化原來是:
/Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.10.xctoolchain/usr/bin/cc
變成了如今的:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
須要用以下命令查找:
cd /usr/share grep -r "/Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.10.xctoolchain/" *
把查出來的內容都改爲如今的路徑。
3.2 QT Creator中的設置
QT Creator的安裝很簡單不冗述。下面用截圖的方式說明如何導入當前已經生成的helloapache.(注:下面的截圖中,我使用了大寫字母來設置工程名,在調試時才發現這在默認狀況下會引發模塊在運行時不能成功調用的問題。因此我後來改爲了小寫。請你們務必注意)
第一:
第二:
第三:
第四:
第五:
上面五步後,一路肯定便可完成導入。要注意第三步中的路徑要是已經存的HelloApache的路徑。下面是導入成功後的工程結構截圖:
其中Makefile及modules.mk是我手動加入的(主要是爲了後面修改方使)。現你已經能夠成功編譯代碼了。但若是你這裏修修代碼會發現,代碼補全及代碼跳轉功能不能正常使用。這主要是沒有設置HelloApache.includes文件的緣由。HelloApache.includes中設置的include路徑並不影響編譯,但會影響代碼補全及代碼跳轉。因此要把Makefile中的所有include路徑都寫進HelloApache.includes文件中去,個人機器上,本文件內容以下:
. /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/apache2 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/apr-1 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include
到此所有設置完成:)
---------------------------------------------------
後記:
由於測試的須要,我有在ubuntu又搭建了開發環境。下面記錄要點:
1 建議不要用命令:
sudo apt-get install lamp-server^
安裝。原要用源代碼安裝。用apt命令全自動安裝LAMP,或者對於開發PHP網店來講挺方便。但對於直接開發apache模塊開說,是十分不便的。這主要作如今配置可選功能上。例如,用apt命令安裝的apache默認是不支持DBD的MySQL接口的。自動安裝的狀況下,用DBD接口對MySQL進行操做時,總是報錯說找不到「apr_dbd_mysql.so」,而事實上這個文件已經安裝到正確的位置上。自動安裝的狀況下,DBD默認只支持sqlite3的接口。
2 編譯安裝Apache
除了下載Apache的主程序httpd外,還要下載apr及apr-util。用下面的方法編譯安裝Apache(以支持DBD:MySQL接口爲例)
./configure --prefix=/usr --enable-module=shared --with-apr=/usr --with-mysql=/usr --with-included-apr make sudo make install
--prefix=/usr 指定Apache安裝路徑
--enable-module=shared 這個設置最好不要省略,要否則在運行PHP時會出問題。
--with-apr=/usr apr的安裝路徑
--with-mysql=/usr mysql的安裝路徑
--with-included-apr 這個選項是爲了適配apr及apr-util的版差別。
apr及apr-util解壓出來後,其目錄去版本號後,放入到httpd解壓目錄的srclib子目錄中去。
3 httpd.conf及apache2.conf的位置
我查了網上的信息,還挺多人問這個路徑問題。你們不認妨試試以下命令:
sudo apachectl -V
這樣能夠查在編譯時默認設置的配置文件路徑在那裏。
4 .gdbinit不調用問題
這個涉用ubuntu的安全啓動。解決這個問題最簡單方法是把「r -X」設置到這裏:
工具 菜單-》選項-》調試器-》GDB-》額外的啓動命令
5 單步調試時報錯說找不到「apr_dbd_mysql.so」
這實際上是環境變量沒有設置好引起的問題。不妨用「sudo」運行以下腳本,以便啓動QT Creator,便可解決問題:
#!/bin/bash #envvars是環境變量的設置腳本。我是在/usr/bin/apachectl這個腳本中找到envvars的路徑的。 source /usr/bin/envvars #QT Creator程序路徑。用來啓動QT Creator /home/jackey/Qt5.3.2/Tools/QtCreator/bin/qtcreator
其它設置與mac上的設置相似,不冗述。