本文目錄一覽:
- 1、編譯環境cmake+gcc怎麼編譯mysql源碼
- 2、linux下c語言操作MYSQL編譯報錯
- 3、cmake安裝mysql編譯提示錯誤,錯誤提示如下,請大家指教,謝謝!
- 4、如何在Windows下編譯或調試MySQL
- 5、在ubuntu中編譯安裝mysql,但是沒有生成/tmp/mysql.sock文件?
編譯環境cmake+gcc怎麼編譯mysql源碼
方法/步驟
1
在安裝mysql資料庫伺服器前,確保你的linux系統是可以連接網路的,下面我們將通過源碼方式來安裝mysql首先通過putty登入進你的Linux系統,確保系統中已經安裝的gcc c++ 等編譯環境,因為mysql從5.5版本開始是使用cmake編譯的,如果三個環境都沒安裝,可以使用下面的命令進行安裝:yum -y install make gcc-c++ cmake bison-devel ncurses-devel
2
查找系統里是否已經安裝了mysql資料庫的相關組件,使用命令:rpm -qa | grep mysql 進行查找,如果查找到,可以使用下面命令進行強制卸載:rpm -e –nodeps 包名
如果你當時在安裝Linux系統時,使用的默認的安裝選項,這一步可以跳過;
linux下c語言操作MYSQL編譯報錯
找不到庫的路徑,或者你的include的路徑不正確,請檢查下你的配置的include路徑是否包含有你的include文件。
還有注意編譯時:
cc -o test test.c 【libmysqlclient.a】 -g …
要寫上這個庫…
或
gcc -o test -L/usr/lib/mysql -lmysqlclient test.c
cmake安裝mysql編譯提示錯誤,錯誤提示如下,請大家指教,謝謝!
錯誤提示里說你的計算機上沒有一個可用的Boost庫或版本太低,MySQL需要不低於Boost 1.57.0的版本。您應該嘗試下載一個Boost,並且完成編譯。
您應該會得到上面圖片中的大部分文件,除了幾個我自己添加的輔助編譯的腳本。
完成之後請再嘗試重新編譯MySQL。
附註:編譯後生成的二進位庫保存在Boost根目錄下\stage\lib中,請根據MySQL的編譯步驟中的指示填寫在Makefile裡面或者加入環境變數(具體的我不太清楚,需要您視具體情況而定)。
如何在Windows下編譯或調試MySQL
用vs code 就可以了。
Visual Studio Code
Visual Studio Code(簡稱VS Code)是由微軟開發的,同時支持Windows、Linux和macOS操作系統的開源文本編輯器。它支持調試,內置了Git 版本控制功能,同時也具有開發環境功能,例如代碼補全(類似於IntelliSense)、代碼片段、代碼重構等。該編輯器支持用戶自定義配置,例如改變主題顏色、鍵盤快捷方式、編輯器屬性和其他參數,還支持擴展程序並在編輯器中內置了擴展程序管理的功能。
安裝LLDB
LLDB是LLVM編譯器的一部分,推薦使用Homebrew安裝LLVM工具集,不建議使用系統自帶的LLDB,安裝前必須先創建證書否則無法安裝,步驟如下:
創建完成後,開始安裝LLVM
brew install llvm –with-python@2 –with-lldb
安裝插件
VS Code自帶有debug功能,這裡我推薦使用LLDB Debugger插件。
接下來,為項目配置調試參數。
配置調試參數
使用VS Code打開MySQL源碼目錄,在側邊欄選擇debug欄目,添加配置,program輸入需要調試的程序路徑,這裡選擇你編譯好的mysqld路徑,args輸入程序啟動所需的參數,通常會指定mysqld的配置文件。這樣就配置好了,是不是很簡單。
啟動調試
點擊啟動按鈕,啟動後如果沒有設置斷點會mysqld會正常啟動,如果觸發了斷點會如下圖顯示。
整個調試窗口基本分為六部分,所有的調試操作都在這裡完成:
1: 顯示變數信息
2: 設置重點關注的變數
3: 顯示調用棧信息
4: 設置斷點信息,在代碼行號前也可以設置斷點
5: 代碼顯示區域,上方是調試按鈕,包括 continue/stepover/step in/step out/restart/stop
6: 調試終端輸入輸出區
斷點設置
在代碼行號前點擊即可在該行為設置斷點,也可以根據條件設置斷點。以設置ConditionalBreakpoint為例,當程序啟動後會按照你設置的條件表達式判斷是否觸發斷點。
Conditional Breakpoint這種方式用在目標變數達到某條件時觸發斷點,其餘則跳過繼續執行。比如:設置變數等於目標表名時觸發斷點,其餘表則跳過,相對函數名斷點省去很多手工跳過操作。
遠程調試
假如你想調試遠程Linux伺服器上的MySQL上面的方法就不合適了,這時需要遠程調試。lldb和gdb都支持遠程調試,這裡以lldb為例。
需要先在遠程主機上安裝lldb,使用yum安裝,源地址在這裡
remote$ yum install -y llvm-toolset-7
安裝完成後,啟動lldb-server
remote$ /opt/rh/llvm-toolset-7/root/usr/bin/lldb-serverplatform –listen “*:9191” –server
接下來,在VS Code調試界面中新增配置項。
{
“type”: “lldb”,
“request”: “attach”,
“name”: “Remote attach”,
“program”: “~/mysql5626/usr/local/mysql/bin/mysqld”,
“pid”:”target_pid”,
“initCommands”: [
“platform select remote-linux”,
“platform connect connect://remote_host:9191”
],
“sourceMap”: {
“/export/home/pb2/build/sb_0-15908961-1436910670.17/mysql-5.6.26”: “/Users/hongbin/workbench/mysql-server”
}
},
program: 本機也要拷貝一份目標程序,載入
pid: 填寫遠程主機的mysqld進程id
sourceMap: 填寫mysqld編譯的代碼路徑與本機代碼庫路徑的映射,這樣調試時代碼才可以和程序關聯在一起看
注意:記得調試前將代碼切換到與目標程序版本一致的branch
在ubuntu中編譯安裝mysql,但是沒有生成/tmp/mysql.sock文件?
編輯的時候有沒有什麼錯誤提示,看樣子是mysql沒啟動成功,mysqld.sock只有在啟動成功的時候才會有。
mysqld.sock在安裝時你指定的是(-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \)/tmp
啟動時錯誤怎麼(socket ‘/var/run/mysqld/mysqld.sock’ (2))跑到了/var/run/下了??
原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/129017.html