mysql交叉編譯總結

2021-06-19 11:55:56 字數 1718 閱讀 5539

版本:mysql-5.6.14.tar.gz

目標系統:基於linux的x86_64位系統

首先,在虛擬機器裡,正常配置(cmake ./ --***)、編譯(sudo make)、安裝(sudo make install)myslq。

為什麼先要正常編譯mysql?

(1)熟悉過程,整體的感受一下從配置到編譯再到安裝成功的過程;

(2)在後面的交叉編譯過程中會用到正常編譯生成的一些檔案。

然後,建立乙個交叉編譯目錄,把mysql解壓的這個目錄下。

第一步:修改mysql解壓目錄下的cmakelist.txt檔案,在該檔案的project($)之前新增

set(cmake_system_name linux)   #指定交叉編譯目標系統(想要進行交叉編譯,這一項是必配的,並且linux要寫對,不能寫成linux,不然在cmake時會提示system is unknown to cmake,雖然配置可以通過,但是編譯的時候會出很多奇怪的錯)

set(cmake_c_compiler ***-gcc)    #指定c交叉編譯器

set(cmake_cxx_compiler ***-g++)    #指定c++交叉編譯器

set(cmake_find_root_path "/opt/interl")   #指定交叉編譯環境安裝目錄

set(cmake_find_root_path_mode_program never)    #從來不在指定目錄下查詢工具程式

set(cmake_find_root_path_mode_library only)    #只在指定目錄下查詢庫檔案

set(cmake_find_root_path_mode_include only)    #只在指定目錄下查詢標頭檔案

以上引數詳細解釋,可檢視

第二步:進行配置,生成makefile

執行cmake . --***(引數) 

第三步:進行編譯

sudo make && sodu make install

在mysql編譯生成的安裝目錄下有個檔案是install_binary,這個就是mysql的安裝說明書。(我覺得每個正規的軟體都應該帶有安裝說明書,不然使用者怎麼知道這個玩意怎麼搞)

編譯過程中會遇到一些編譯錯誤。例如:

1,在cmake過程中,發生

---- could not find curses (missing:  curses_library curses_include_path)

curses是mysql依賴的乙個庫,這個庫也應該進行交叉編譯。解決這個問題可在cmake後面新增-dcurses_library=/usr/lib/libcurses.so -dcurses_include_path=/usr/include/ncurses(或指定交叉編譯該庫目錄和頭檔案目錄)

2,在編譯過程發生例如:/bin/sh: comp_err: command not found之類的錯誤

可從正常編譯過的mysql目錄下查詢該檔案,並拷貝到/usr/bin/目錄下

3,在編譯過程中發生curses.h: no such file or directory的錯誤,

可在去編譯目錄下找到cmakelists.txt,在該檔案中的include_directory()中新增$,如下

include_directory(

....

....$)

新增$的前提是在cmake的時候使用-dcurses_include_path指定的curses頭檔案目錄

mysql交叉編譯總結

版本 mysql 5.6.14.tar.gz 目標系統 基於linux的x86 64位系統 首先,在虛擬機器裡,正常配置 cmake 編譯 sudo make 安裝 sudo make install myslq。為什麼先要正常編譯mysql?1 熟悉過程,整體的感受一下從配置到編譯再到安裝成功的過...

golang 交叉編譯總結

golang 交叉編譯 golang 交叉編譯牽涉到三個變數 cgo enabled 0 表示設定cgo工具不可用,使用go自己的編譯器 goos 目標作業系統 goarch 表示程式構建環境的目標計算架構 比如 386,amd64,arm,arm64,ppc64,ppc64le,mips,mips...

那些交叉編譯問題總結

交叉編譯的作用?為什麼需要交叉編譯器?交叉編譯器的版本?如何獲取交叉編譯器?面試回答 我們知道不同的平台cpu體系結構不同,所使用的彙編也不相同。比如windows下是x86彙編生成的可執行檔案,而arm中需要arm彙編生成的可執行檔案。如果我們直接將x86平台下生成的可執行檔案放入arm中是不能執...