版本: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頭檔案目錄
4:列舉出我交叉編譯的一些引數用cmake命令寫的,有時候makelist的老是不起到作用,寫到外面才起作用,我也不清楚具體原因了,而且有反覆。記錄一下 cmake . -dcmake_install_prefix=/data/data/mysql -dmysql_datadir=/data/data/mysql -ddownload_boost=1 -dsysconfdir=/etc -dwith_innobase_storage_engine=1 -dwith_partition_storage_engine=1 -dwith_federated_storage_engine=1 -dwith_blackhole_storage_engine=1 -dwith_myisam_storage_engine=1 -denabled_local_infile=1 -denable_dtrace=0 -ddefault_charset=utf8mb4 -ddefault_collation=utf8mb4_general_ci -dwith_embedded_server=1 -dcmake_c_flags="$ -lpthread -lm -lncurses -lreadline -ledit -mcpu=arm8"
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中是不能執...