mysql8 編譯安裝 cmake引數
2020年7月31日14:11:54
需要注意的是mysql使用一分部boost的庫,所以需要會安裝boost,也很簡單
window安裝boost,https://www.cnblogs.com/zx-admin/p/11792567.html
linux安裝 下載地址https://dl.bintray.com/boostorg/release/1.73.0/source/
wget https://dl.bintray.com/boostorg/release/1.73.0/source/boost_1_73_0.tar.gz tar xfboost_1_73_0.tar.gz -C /usr/local/ mv /usr/local/boost_1_60_0 /usr/local/boost
文件官方URL :https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options.html
該CMake的程式提供的控制權如何配置MySQL原始碼分發很大。通常,您可以使用CMake命令列上的選項來執行此操作。有關CMake支援的選項的資訊,請在頂級源目錄中執行以下命令之一:
cmake . -LH
ccmake .
您還可以使用某些環境變數來影響CMake。請參見第4.9節“環境變數”。
對於布林選項,可以將值指定為1或ON
啟用該選項,或者將其指定為0或OFF
禁用該選項。
許多選項配置了編譯時預設值,這些預設值可以在伺服器啟動時被覆蓋。CMAKE_INSTALL_PREFIX
,MYSQL_TCP_PORT
,和MYSQL_UNIX_ADDR
該配置預設安裝基本目錄的位置,TCP / IP埠號和Unix套接字檔案選項可以在與伺服器啟動而改變--basedir
,--port
和--socket
選項的mysqld。在適用的情況下,配置選項描述指示相應的mysqld啟動選項。
以下各節提供有關CMake選項的更多資訊。
CMake選項參考
下表顯示了可用的CMake選項。Default
列中,PREFIX
代表CMAKE_INSTALL_PREFIX
選項的值,該選項指定安裝基礎目錄。該值用作多個安裝子目錄的父位置。
表2.13 MySQL源配置選項參考(CMake)
格式 | 描述 | 預設 | 介紹了 | 已移除 |
---|---|---|---|---|
ADD_GDB_INDEX |
是否在二進位制檔案中啟用.gdb_index節的生成 | 8.0.18 | ||
BUILD_CONFIG |
使用與官方版本相同的構建選項 | |||
BUNDLE_RUNTIME_LIBRARIES |
將適用於Windows的伺服器MSI和Zip軟體包的執行時庫捆綁在一起 | OFF |
||
CMAKE_BUILD_TYPE |
要生產的建築型別 | RelWithDebInfo |
||
CMAKE_CXX_FLAGS |
C ++編譯器的標誌 | |||
CMAKE_C_FLAGS |
C編譯器的標誌 | |||
CMAKE_INSTALL_PREFIX |
安裝基礎目錄 | /usr/local/mysql |
||
CMAKE_INSTALL_PRIV_LIBDIR |
安裝專用庫目錄 | 8.0.18 | ||
COMPILATION_COMMENT |
關於編譯環境的評論 | |||
COMPILATION_COMMENT_SERVER |
關於供mysqld使用的編譯環境的評論 | 8.0.14 | ||
COMPRESS_DEBUG_SECTIONS |
壓縮二進位制可執行檔案的除錯部分 | OFF |
8.0.23 | |
CPACK_MONOLITHIC_INSTALL |
軟體包構建是否生成單個檔案 | OFF |
||
DEFAULT_CHARSET |
預設伺服器字符集 | utf8mb4 |
||
DEFAULT_COLLATION |
預設伺服器排序規則 | utf8mb4_0900_ai_ci |
||
DISABLE_DATA_LOCK |
排除效能模式資料鎖檢測 | OFF |
||
DISABLE_PSI_COND |
排除效能模式條件檢測 | OFF |
||
DISABLE_PSI_ERROR |
排除效能模式伺服器錯誤檢測 | OFF |
||
DISABLE_PSI_FILE |
排除效能架構檔案檢測 | OFF |
||
DISABLE_PSI_IDLE |
排除效能模式空閒檢測 | OFF |
||
DISABLE_PSI_MEMORY |
排除效能架構記憶體檢測 | OFF |
||
DISABLE_PSI_METADATA |
排除效能架構元資料檢測 | OFF |
||
DISABLE_PSI_MUTEX |
排除效能架構互斥檢測 | OFF |
||
DISABLE_PSI_PS |
排除效能模式準備好的語句 | OFF |
||
DISABLE_PSI_RWLOCK |
排除效能模式rwlock工具 | OFF |
||
DISABLE_PSI_SOCKET |
排除效能架構套接字工具 | OFF |
||
DISABLE_PSI_SP |
排除效能模式儲存程式檢測 | OFF |
||
DISABLE_PSI_STAGE |
排除效能模式階段檢測 | OFF |
||
DISABLE_PSI_STATEMENT |
排除效能模式語句檢測 | OFF |
||
DISABLE_PSI_STATEMENT_DIGEST |
排除效能模式語句_摘要工具 | OFF |
||
DISABLE_PSI_TABLE |
排除效能模式表檢測 | OFF |
||
DISABLE_PSI_THREAD |
排除效能架構執行緒檢測 | OFF |
||
DISABLE_PSI_TRANSACTION |
排除效能架構事務檢測 | OFF |
||
DISABLE_SHARED |
不建立共享庫,編譯位置相關的程式碼 | OFF |
8.0.18 | |
DOWNLOAD_BOOST |
是否下載Boost庫 | OFF |
||
DOWNLOAD_BOOST_TIMEOUT |
下載Boost庫的超時時間(以秒為單位) | 600 |
||
ENABLED_LOCAL_INFILE |
是否為載入資料啟用本地 | OFF |
||
ENABLED_PROFILING |
是否啟用查詢分析程式碼 | ON |
||
ENABLE_DOWNLOADS |
是否下載可選檔案 | OFF |
||
ENABLE_EXPERIMENTAL_SYSVARS |
是否啟用實驗性InnoDB系統變數 | OFF |
||
ENABLE_GCOV |
是否包括gcov支援 | |||
ENABLE_GPROF |
啟用gprof(僅針對優化的Linux構建) | OFF |
||
FORCE_INSOURCE_BUILD |
是否強制進行原始碼構建 | OFF |
8.0.14 | |
FORCE_UNSUPPORTED_COMPILER |
是否允許不支援的編譯器 | OFF |
||
FPROFILE_GENERATE |
是否生成配置檔案引導的優化資料 | OFF |
8.0.19 | |
FPROFILE_USE |
是否使用配置檔案引導的優化資料 | OFF |
8.0.19 | |
IGNORE_AIO_CHECK |
使用-DBUILD_CONFIG = mysql_release時,忽略libaio檢查 | OFF |
||
INSTALL_BINDIR |
使用者可執行檔案目錄 | PREFIX/bin |
||
INSTALL_DOCDIR |
文件目錄 | PREFIX/docs |
||
INSTALL_DOCREADMEDIR |
自述檔案目錄 | PREFIX |
||
INSTALL_INCLUDEDIR |
標頭檔案目錄 | PREFIX/include |
||
INSTALL_INFODIR |
資訊檔案目錄 | PREFIX/docs |
||
INSTALL_LAYOUT |
選擇預定義的安裝佈局 | STANDALONE |
||
INSTALL_LIBDIR |
庫檔案目錄 | PREFIX/lib |
||
INSTALL_MANDIR |
手冊頁目錄 | PREFIX/man |
||
INSTALL_MYSQLKEYRINGDIR |
keyring_file外掛資料檔案的目錄 | platform specific |
||
INSTALL_MYSQLSHAREDIR |
共享資料目錄 | PREFIX/share |
||
INSTALL_MYSQLTESTDIR |
mysql-test目錄 | PREFIX/mysql-test |
||
INSTALL_PKGCONFIGDIR |
mysqlclient.pc pkg-config檔案的目錄 | INSTALL_LIBDIR/pkgconfig |
||
INSTALL_PLUGINDIR |
外掛目錄 | PREFIX/lib/plugin |
||
INSTALL_SBINDIR |
伺服器可執行目錄 | PREFIX/bin |
||
INSTALL_SECURE_FILE_PRIVDIR |
secure_file_priv預設值 | platform specific |
||
INSTALL_SHAREDIR |
aclocal / mysql.m4安裝目錄 | PREFIX/share |
||
INSTALL_STATIC_LIBRARIES |
是否安裝靜態庫 | ON |
||
INSTALL_SUPPORTFILESDIR |
額外的支援檔案目錄 | PREFIX/support-files |
||
LINK_RANDOMIZE |
是否隨機化mysqld二進位制檔案中的符號順序 | OFF |
||
LINK_RANDOMIZE_SEED |
LINK_RANDOMIZE選項的種子值 | mysql |
||
MAX_INDEXES |
每張表的最大索引 | 64 |
||
MUTEX_TYPE |
InnoDB互斥鎖型別 | event |
||
MYSQLX_TCP_PORT |
X外掛使用的TCP / IP埠號 | 33060 |
||
MYSQLX_UNIX_ADDR |
X外掛使用的Unix套接字檔案 | /tmp/mysqlx.sock |
||
MYSQL_DATADIR |
資料目錄 | |||
MYSQL_MAINTAINER_MODE |
是否啟用特定於MySQL維護人員的開發環境 | OFF |
||
MYSQL_PROJECT_NAME |
Windows / OS X專案名稱 | MySQL |
||
MYSQL_TCP_PORT |
TCP / IP埠號 | 3306 |
||
MYSQL_UNIX_ADDR |
Unix套接字檔案 | /tmp/mysql.sock |
||
ODBC_INCLUDES |
ODBC包含目錄 | |||
ODBC_LIB_DIR |
ODBC庫目錄 | |||
OPTIMIZER_TRACE |
是否支援優化器跟蹤 | |||
REPRODUCIBLE_BUILD |
格外小心,以獨立於構建位置和時間來建立構建結果 | |||
SYSCONFDIR |
選項檔案目錄 | |||
SYSTEMD_PID_DIR |
systemd下PID檔案的目錄 | /var/run/mysqld |
||
SYSTEMD_SERVICE_NAME |
systemd下的MySQL服務名稱 | mysqld |
||
TMPDIR |
tmpdir預設值 | |||
USE_LD_GOLD |
是否使用GNU黃金鍊接器 | ON |
||
USE_LD_LLD |
是否使用llvm lld連結器 | ON |
8.0.16 | |
WIN_DEBUG_NO_INLINE |
是否禁用功能內聯 | OFF |
||
WITHOUT_xxx_STORAGE_ENGINE |
從構建中排除儲存引擎xxx | |||
WITH_ANT |
用於構建GCS Java包裝器的Ant路徑 | |||
WITH_ASAN |
啟用AddressSanitizer | OFF |
||
WITH_ASAN_SCOPE |
啟用AddressSanitizer -fsanitize-address-use-scope範圍Clang標誌 | OFF |
||
WITH_AUTHENTICATION_LDAP |
如果無法構建LDAP認證外掛,是否報告錯誤 | OFF |
||
WITH_AUTHENTICATION_PAM |
構建PAM身份驗證外掛 | OFF |
||
WITH_AWS_SDK |
Amazon Web Services軟體開發套件的位置 | |||
WITH_BOOST |
Boost庫原始碼的位置 | |||
WITH_CLIENT_PROTOCOL_TRACING |
建立客戶端協議跟蹤框架 | ON |
||
WITH_CURL |
curl庫的位置 | |||
WITH_DEBUG |
是否包括除錯支援 | OFF |
||
WITH_DEFAULT_COMPILER_OPTIONS |
是否使用預設的編譯器選項 | ON |
||
WITH_DEFAULT_FEATURE_SET |
是否使用預設功能集 | ON |
8.0.22 | |
WITH_EDITLINE |
使用哪個libedit / editline庫 | bundled |
||
WITH_GMOCK |
googlemock分發路徑 | |||
WITH_ICU |
ICU支援型別 | bundled |
||
WITH_INNODB_EXTRA_DEBUG |
是否包括對InnoDB的額外除錯支援。 | OFF |
||
WITH_INNODB_MEMCACHED |
是否生成memcached共享庫。 | OFF |
||
WITH_JEMALLOC |
是否與-ljemalloc連結 | OFF |
8.0.16 | |
WITH_KEYRING_TEST |
建立金鑰環測試程式 | OFF |
||
WITH_LIBEVENT |
使用哪個libevent庫 | bundled |
||
WITH_LIBWRAP |
是否包括libwrap(TCP包裝器)支援 | OFF |
||
WITH_LOCK_ORDER |
是否啟用LOCK_ORDER工具 | OFF |
8.0.17 | |
WITH_LSAN |
是否在沒有AddressSanitizer的情況下執行LeakSanitizer | OFF |
8.0.16 | |
WITH_LTO |
啟用連結時間優化器 | OFF |
8.0.13 | |
WITH_LZ4 |
LZ4庫支援的型別 | bundled |
||
WITH_LZMA |
LZMA庫支援的型別 | bundled |
8.0.16 | |
WITH_MECAB |
編譯MeCab | |||
WITH_MSAN |
啟用MemorySanitizer | OFF |
||
WITH_MSCRT_DEBUG |
啟用Visual Studio CRT記憶體洩漏跟蹤 | OFF |
||
WITH_MYSQLX |
是否禁用X協議 | ON |
||
WITH_NUMA |
設定NUMA記憶體分配策略 | |||
WITH_PROTOBUF |
使用哪個協議緩衝區包 | bundled |
||
WITH_RAPID |
是否構建快速的開發週期外掛 | ON |
||
WITH_RAPIDJSON |
RapidJSON支援的型別 | bundled |
8.0.13 | |
WITH_RE2 |
RE2庫支援的型別 | bundled |
8.0.18 | |
WITH_ROUTER |
是否建立MySQL路由器 | ON |
8.0.16 | |
WITH_SSL |
SSL支援型別 | system |
||
WITH_SYSTEMD |
啟用系統支援檔案的安裝 | OFF |
||
WITH_SYSTEM_LIBS |
設定未明確設定的庫選項的系統值 | OFF |
||
WITH_TEST_TRACE_PLUGIN |
構建測試協議跟蹤外掛 | OFF |
||
WITH_TSAN |
啟用ThreadSanitizer | OFF |
||
WITH_UBSAN |
啟用未定義的行為清理器 | OFF |
||
WITH_UNIT_TESTS |
用單元測試編譯MySQL | ON |
||
WITH_UNIXODBC |
啟用unixODBC支援 | OFF |
||
WITH_VALGRIND |
是否在Valgrind標頭檔案中編譯 | OFF |
||
WITH_ZLIB |
zlib支援的型別 | bundled |
||
WITH_ZSTD |
zstd支援的型別 | bundled |
8.0.18 | |
WITH_xxx_STORAGE_ENGINE |
將儲存引擎xxx靜態編譯到伺服器中 |
常規選項
-
該選項使用與Oracle相同的構建選項來配置源分發,Oracle使用這些生成選項來為MySQL官方發行版生成二進位制分發。
-
-DBUNDLE_RUNTIME_LIBRARIES=
bool
是否將執行時庫與Windows的伺服器MSI和Zip軟體包捆綁在一起。
-
生成的構建型別:
-
RelWithDebInfo
:啟用優化並生成除錯資訊。這是預設的MySQL構建型別。 -
Release
:啟用優化,但省略除錯資訊以減小構建大小。該構建型別是在MySQL 8.0.13中新增的。 -
Debug
:禁用優化並生成除錯資訊。如果WITH_DEBUG
啟用該選項,則也使用此構建型別。即-DWITH_DEBUG=1
具有與相同的效果-DCMAKE_BUILD_TYPE=Debug
。
-
-
-DCPACK_MONOLITHIC_INSTALL=
bool
此選項影響make軟體包操作是生成多個安裝軟體包檔案還是單個檔案。如果禁用,該操作將產生多個安裝包檔案,如果您只想安裝完整MySQL安裝的一部分,則可能很有用。如果啟用,它將生成一個用於安裝所有內容的檔案。
-
定義是否強制進行源內構建。推薦使用源外版本,因為它們允許來自同一源的多個版本,並且可以通過刪除版本目錄來快速執行清理。要強制在程式碼構建,呼叫CMake的使用
-DFORCE_INSOURCE_BUILD=ON
。
安裝佈局選項
該CMAKE_INSTALL_PREFIX
選項指示基本安裝目錄。具有指示元件位置的形式名稱的其他選項是相對於字首解釋的,並且它們的值是相對路徑名。它們的值不應包含字首。INSTALL_
xxx
-
-DCMAKE_INSTALL_PREFIX=
dir_name
安裝基礎目錄。
可以使用
--basedir
選項在伺服器啟動時設定此值。 -
在哪裡安裝使用者程式。
-
在哪裡安裝文件。
-
-DINSTALL_DOCREADMEDIR=
dir_name
在哪裡安裝
README
檔案。 -
在哪裡安裝標頭檔案。
-
在哪裡安裝資訊檔案。
-
選擇預定義的安裝佈局:
-
STANDALONE
:與.tar.gz
和.zip
軟體包使用的佈局相同。這是預設值。 -
RPM
:佈局類似於RPM軟體包。 -
SVR4
:Solaris軟體包佈局。 -
DEB
:DEB程式包佈局(實驗)。
您可以選擇預定義的佈局,但可以通過指定其他選項來修改各個元件的安裝位置。例如:
cmake . -DINSTALL_LAYOUT=SVR4 -DMYSQL_DATADIR=/var/mysql/data
的
INSTALL_LAYOUT
值確定的預設值secure_file_priv
,keyring_encrypted_file_data
和keyring_file_data
系統變數。請參見第5.1.8節“伺服器系統變數”和第6.4.4.12節“金鑰環系統變數”中對這些變數的描述。 -
-
在哪裡安裝庫檔案。
-
在哪裡安裝手冊頁。
-
-DINSTALL_MYSQLKEYRINGDIR=
dir_path
用作
keyring_file
外掛資料檔案位置的預設目錄。預設值是特定於平臺的,並取決於CMake選項的值。請參見第5.1.8節“伺服器系統變數”中對系統變數的描述。INSTALL_LAYOUT
keyring_file_data
-
-DINSTALL_MYSQLSHAREDIR=
dir_name
在何處安裝共享資料檔案。
-
-DINSTALL_MYSQLTESTDIR=
dir_name
安裝
mysql-test
目錄的位置。要禁止安裝此目錄,請將選項顯式設定為空值(-DINSTALL_MYSQLTESTDIR=
)。 -
-DINSTALL_PKGCONFIGDIR=
dir_name
pkg-config
mysqlclient.pc
使用的安裝檔案的目錄。預設值為,除非以結尾,在這種情況下,該值將被首先刪除。INSTALL_LIBDIR/pkgconfig
INSTALL_LIBDIR
/mysql
-
外掛目錄的位置。
可以使用
--plugin_dir
選項在伺服器啟動時設定此值。 -
-DINSTALL_PRIV_LIBDIR=
dir_name
動態庫目錄的位置。
預設位置:RPM =
/usr/lib64/mysql/private/
,DEB =/usr/lib/mysql/private/
和TAR =lib/private/
。該選項是在MySQL 8.0.18中新增的。
對於Protobuf:由於這是一個私有位置,因此載入程式(例如Linux上的ld-linux.so)在
libprotobuf.so
沒有幫助的情況下可能找不到檔案。為了引導載入程式,RPATH
將值$ ORIGIN /../$ INSTALL_PRIV_LIBDIR新增到mysqld和mysqlxtest中。這在大多數情況下都有效,但是在使用資源組功能時,mysqld是setsuid,然後載入程式會忽略RPATH
其中包含$ORIGIN
。為了克服這個問題,在mysqld的DEB和RPM變體中設定了目錄的顯式完整路徑,因為已知目標位置。對於tarball安裝,需要使用patchelf之類的工具修補mysqld。 -
在哪裡安裝mysqld伺服器。
-
-DINSTALL_SECURE_FILE_PRIVDIR=
dir_name
secure_file_priv
系統變數的預設值。預設值是特定於平臺的,並取決於CMake選項的值。請參見第5.1.8節“伺服器系統變數”中對系統變數的描述。INSTALL_LAYOUT
secure_file_priv
-
在哪裡安裝
aclocal/mysql.m4
。 -
-DINSTALL_STATIC_LIBRARIES=
bool
是否安裝靜態庫。預設值為
ON
。如果設定為OFF
,則不會安裝以下庫:libmysqlclient.a
,libmysqlservices.a
。 -
-DINSTALL_SUPPORTFILESDIR=
dir_name
在哪裡安裝其他支援檔案。
-
是否隨機化mysqld二進位制檔案中符號的順序。預設值為
OFF
。應該僅出於除錯目的而啟用此選項。 -
LINK_RANDOMIZE
選項的種子值。該值是一個字串。預設值為mysql
,是任意選擇。 -
MySQL資料目錄的位置。
可以使用
--datadir
選項在伺服器啟動時設定此值。 -
ODBC的位置包括目錄,並且可以在配置聯結器/ ODBC時使用。
-
ODBC庫目錄的位置,可以在配置聯結器/ ODBC時使用。
-
預設
my.cnf
選項檔案目錄。無法在伺服器啟動時設定此位置,但是可以使用選項使用給定的選項檔案啟動伺服器,其中該檔案的完整路徑名是。
--defaults-file=
file_name
file_name
-
當MySQL由systemd管理時,在其中建立PID檔案的目錄的名稱。預設值為
/var/run/mysqld
;這可能會根據INSTALL_LAYOUT
值隱式更改。除非
WITH_SYSTEMD
啟用此選項,否則將忽略它。 -
MySQL由systemd管理時使用的MySQL服務的名稱。預設值為
mysqld
;這可能會根據INSTALL_LAYOUT
值隱式更改。除非
WITH_SYSTEMD
啟用此選項,否則將忽略它。 -
tmpdir
系統變數使用的預設位置。如果未指定,則預設值為P_tmpdir
in<stdio.h>
。
儲存引擎選項
儲存引擎是作為外掛構建的。您可以將外掛構建為靜態模組(編譯到伺服器中)或動態模組(構建為動態庫,必須使用該INSTALL PLUGIN
語句或--plugin-load
選項安裝到伺服器中,然後才能使用該外掛)。有些外掛可能不支援靜態或動態構建。
的InnoDB
,MyISAM
,MERGE
,MEMORY
,和CSV
發動機是強制性的(總是編譯到伺服器)和無需顯式安裝。
要將儲存引擎靜態編譯到伺服器中,請使用。一些可允許的值,,,,和或(支援)。例子:-DWITH_
engine
_STORAGE_ENGINE=1engine
ARCHIVE
BLACKHOLE
EXAMPLE
FEDERATED
NDB
NDBCLUSTER
NDB
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
注意
如果沒有Performance Schema支援,則無法進行編譯。如果希望不使用特定型別的工具進行編譯,則可以使用以下CMake選項進行編譯:
DISABLE_PSI_COND
DISABLE_PSI_DATA_LOCK
DISABLE_PSI_ERROR
DISABLE_PSI_FILE
DISABLE_PSI_IDLE
DISABLE_PSI_MEMORY
DISABLE_PSI_METADATA
DISABLE_PSI_MUTEX
DISABLE_PSI_PS
DISABLE_PSI_RWLOCK
DISABLE_PSI_SOCKET
DISABLE_PSI_SP
DISABLE_PSI_STAGE
DISABLE_PSI_STATEMENT
DISABLE_PSI_STATEMENT_DIGEST
DISABLE_PSI_TABLE
DISABLE_PSI_THREAD
DISABLE_PSI_TRANSACTION
例如,要在沒有互斥檢測的情況下進行編譯,請使用-DDISABLE_PSI_MUTEX=1
選項配置MySQL。
要從構建中排除儲存引擎,請使用。例子:-DWITH_
engine
_STORAGE_ENGINE=0
-DWITH_ARCHIVE_STORAGE_ENGINE=0
-DWITH_EXAMPLE_STORAGE_ENGINE=0
-DWITH_FEDERATED_STORAGE_ENGINE=0
也可以使用(但首選)從構建中排除儲存引擎。例子:-DWITHOUT_
engine
_STORAGE_ENGINE=1-DWITH_
engine
_STORAGE_ENGINE=0
-DWITHOUT_ARCHIVE_STORAGE_ENGINE=1
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
如果既未為給定儲存引擎指定,也未為其指定,則將該引擎構建為共享模組,如果無法將其構建為共享模組,則排除該引擎。-DWITH_
engine
_STORAGE_ENGINE-DWITHOUT_
engine
_STORAGE_ENGINE
功能選項
-
此選項確定是否啟用
.gdb_index
二進位制檔案中的節的生成,這將使它們更快地載入到偵錯程式中。該選項預設為禁用。使用lld連結器,並被禁用。如果使用lld或GNUgold以外的連結器,則該連結無效。該選項是在MySQL 8.0.18中新增的。
-
關於編譯環境的描述性評論。從MySQL 8.0.14開始,mysqld使用
COMPILATION_COMMENT_SERVER
。其他程式繼續使用COMPILATION_COMMENT
。 -
-DCOMPRESS_DEBUG_SECTIONS=
bool
是否壓縮二進位制可執行檔案的除錯部分(僅Linux)。在構建過程中,壓縮可執行除錯節可以節省空間,但要花費額外的CPU時間。
預設值為
OFF
。如果未顯式設定此選項,但設定了COMPRESS_DEBUG_SECTIONS
環境變數,則該選項將從該變數獲取其值。MySQL 8.0.23中添加了此選項。
-
-DCOMPILATION_COMMENT_SERVER=
string
關於mysqld使用的編譯環境的描述性註釋(例如,設定
version_comment
系統變數)。該選項是在MySQL 8.0.14中新增的。在8.0.14之前,伺服器使用COMPILATION_COMMENT
。 -
-DDEFAULT_CHARSET=
charset_name
伺服器字符集。預設情況下,MySQL使用
utf8mb4
字符集。charset_name
可以是一種binary
,armscii8
,ascii
,big5
,cp1250
,cp1251
,cp1256
,cp1257
,cp850
,cp852
,cp866
,cp932
,dec8
,eucjpms
,euckr
,gb2312
,gbk
,geostd8
,greek
,hebrew
,hp8
,keybcs2
,koi8r
,koi8u
,latin1
,latin2
,latin5
,latin7
,macce
,macroman
,sjis
,swe7
,tis620
,ucs2
,ujis
,utf8
,utf8mb4
,utf16
,utf16le
,utf32
。允許的字符集在cmake/character_sets.cmake
檔案中以的值列出CHARSETS_AVAILABLE
。可以使用
--character_set_server
選項在伺服器啟動時設定此值。 -
-DDEFAULT_COLLATION=
collation_name
伺服器排序規則。預設情況下,MySQL使用
utf8mb4_0900_ai_ci
。使用該SHOW COLLATION
語句確定每個字符集可以使用哪些排序規則。可以使用
--collation_server
選項在伺服器啟動時設定此值。 -
是否排除效能模式條件檢測。預設值為
OFF
(包括)。 -
是否排除效能模式檔案檢測。預設值為
OFF
(包括)。 -
是否排除效能模式空閒檢測。預設值為
OFF
(包括)。 -
是否排除效能模式記憶體檢測。預設值為
OFF
(包括)。 -
是否排除效能模式元資料檢測。預設值為
OFF
(包括)。 -
是否排除效能架構互斥檢測。預設值為
OFF
(包括)。 -
是否排除效能模式rwlock工具。預設值為
OFF
(包括)。 -
是否排除效能架構套接字工具。預設值為
OFF
(包括)。 -
是否排除效能模式儲存程式工具。預設值為
OFF
(包括)。 -
是否排除效能模式階段檢測。預設值為
OFF
(包括)。 -
是否排除效能模式語句工具。預設值為
OFF
(包括)。 -
-DDISABLE_PSI_STATEMENT_DIGEST=
bool
是否排除效能模式statement_digest工具。預設值為
OFF
(包括)。 -
是否排除效能模式表工具。預設值為
OFF
(包括)。 -
是否禁用構建構建共享庫並編譯與位置相關的程式碼。預設值為
OFF
(編譯與位置無關的程式碼)。此選項未使用,並已在MySQL 8.0.18中刪除。
-
排除效能模式準備好的語句例項檢測。預設值為
OFF
(包括)。 -
排除效能架構執行緒檢測。預設值為
OFF
(包括)。僅在構建時不使用任何工具時才禁用執行緒,因為其他工具對執行緒有依賴性。
-
-DDISABLE_PSI_TRANSACTION=
bool
排除效能架構事務檢測。預設值為
OFF
(包括)。 -
排除效能模式資料鎖檢測。預設值為
OFF
(包括)。 -
排除效能模式伺服器錯誤檢測。預設值為
OFF
(包括)。 -
是否下載Boost庫。預設值為
OFF
。請參閱該
WITH_BOOST
選項,以獲取有關使用Boost的其他討論。 -
-DDOWNLOAD_BOOST_TIMEOUT=
seconds
下載Boost庫的超時時間(以秒為單位)。預設值為600秒。
請參閱該
WITH_BOOST
選項,以獲取有關使用Boost的其他討論。 -
是否下載可選檔案。例如,啟用此選項後,CMake將下載測試套件用於執行單元測試的Google Test發行版,或構建GCS Java包裝程式所需的Ant和JUnit。
-
-DENABLE_EXPERIMENTAL_SYSVARS=
bool
是否啟用實驗
InnoDB
系統變數。實驗性系統變數是供那些從事MySQL開發的人員使用的,只能在開發或測試環境中使用,並且在將來的MySQL版本中可能會被刪除,恕不另行通知。有關實驗系統變數的資訊,請參見/storage/innobase/handler/ha_innodb.cc
MySQL原始碼樹。可以通過搜尋“PLUGIN_VAR_EXPERIMENTAL”來識別實驗系統變數。 -
是否包括gcov支援(僅Linux)。
-
是否啟用
gprof
(僅優化的Linux構建)。 -
此選項控制
LOCAL
MySQL客戶端庫的內建預設功能。因此,沒有明確安排的客戶端將LOCAL
根據ENABLED_LOCAL_INFILE
MySQL構建時指定的設定禁用或啟用功能。預設情況下,MySQL二進位制發行版中的客戶端庫在
ENABLED_LOCAL_INFILE
禁用的情況下進行編譯。如果從原始碼編譯MySQL,請ENABLED_LOCAL_INFILE
根據未進行顯式安排的客戶端應LOCAL
分別禁用還是啟用功能,將其配置為禁用或啟用。ENABLED_LOCAL_INFILE
控制客戶端LOCAL
功能的預設設定。對於伺服器,local_infile
系統變數控制伺服器端LOCAL
功能。要明確原因伺服器拒絕或允許LOAD DATA LOCAL
語句(不管有客戶程式和庫在構建時或執行時配置),啟動mysqld的與local_infile
分別禁用或啟用。local_infile
也可以在執行時設定。請參見第6.1.6節“ LOAD DATA LOCAL的安全注意事項”。 -
是否啟用查詢概要分析程式碼(用於
SHOW PROFILE
和SHOW PROFILES
語句)。 -
-DFORCE_UNSUPPORTED_COMPILER=
bool
預設情況下,CMake檢查支援的編譯器的最低版本:Visual Studio 2015(Windows);GCC 4.8或Clang 3.4(Linux);Developer Studio 12.5(Solaris伺服器);Developer Studio 12.4或GCC 4.8(Solaris客戶端庫);Clang 3.6(macOS),Clang 3.4(FreeBSD)。要禁用此檢查,請使用
-DFORCE_UNSUPPORTED_COMPILER=ON
。 -
是否生成配置檔案引導的優化(PGO)資料。該選項可用於在GCC上試用PGO。
cmake/fprofile.cmake
有關使用FPROFILE_GENERATE
和的資訊,請參見MySQL原始碼分發中的檔案FPROFILE_USE
。這些選項已在GCC 8和9中進行了測試。該選項是在MySQL 8.0.19中新增的。
-
是否使用配置檔案引導的優化(PGO)資料。該選項可用於在GCC上試用PGO。
cmake/fprofile.cmake
有關使用FPROFILE_GENERATE
和的資訊,請參見MySQL原始碼分發中的檔案FPROFILE_USE
。這些選項已在GCC 8和9中進行了測試。啟用
FPROFILE_USE
也會啟用WITH_LTO
。該選項是在MySQL 8.0.19中新增的。
-
如果
-DBUILD_CONFIG=mysql_release
在Linux上提供了該選項,則libaio
預設情況下必須連結該庫。如果您沒有libaio
或不想安裝它,可以通過指定取消對它的檢查-DIGNORE_AIO_CHECK=1
。 -
每個表的最大索引數。預設值為64。最大值為255。小於64的值將被忽略,並使用預設值64。
-
是否啟用特定於MySQL維護人員的開發環境。如果啟用,此選項將導致編譯器警告變為錯誤。
-
所使用的互斥鎖型別
InnoDB
。選項包括:-
event
:使用事件互斥鎖。這是預設值和原始InnoDB
互斥量實現。 -
sys
注意:在UNIX系統上使用POSIX互斥鎖。CRITICAL_SECTION
如果可用,請在Windows上使用onject。 -
futex
注意:使用Linux futexes代替條件變數來安排等待執行緒。
-
-
X外掛偵聽TCP / IP連線的埠號。預設值為33060。
可以在伺服器啟動時使用
mysqlx_port
系統變數設定此值。 -
伺服器在其上偵聽X外掛套接字連線的Unix套接字檔案路徑。這必須是絕對路徑名。預設值為
/tmp/mysqlx.sock
。可以在伺服器啟動時使用
mysqlx_port
系統變數設定此值。 -
對於Windows或macOS,將專案名稱合併到專案檔名中。
-
伺服器在其上偵聽TCP / IP連線的埠號。預設值為3306。
可以使用
--port
選項在伺服器啟動時設定此值。 -
伺服器在其上偵聽套接字連線的Unix套接字檔案路徑。這必須是絕對路徑名。預設值為
/tmp/mysql.sock
。可以使用
--socket
選項在伺服器啟動時設定此值。 -
是否支援優化器跟蹤。參見MySQL內部:追蹤優化器。
-
對於Linux系統上的構建,此選項控制是否要特別注意建立與構建位置和時間無關的構建結果。
該選項是在MySQL 8.0.11中新增的。從MySQL 8.0.12開始,它預設
ON
用於RelWithDebInfo
構建。 -
CMake使構建過程與GNUgold連結程式連結(如果可用且未明確禁用)。要禁用此連結器,請指定
-DUSE_LD_GOLD=OFF
選項。 -
CMake使構建過程與Clang的llvmlld連結程式連結(如果可用且未明確禁用)。要禁用此連結器,請指定
-DUSE_LD_LLD=OFF
選項。該選項是在MySQL 8.0.16中新增的。
-
是否在Windows上禁用功能內聯。預設為關閉(啟用內聯)。
-
將路徑設定為構建GCS Java包裝器時所需的Ant。以與現有
WITH_BOOST
CMake選項類似的方式工作。設定WITH_ANT
為Ant tarball或已經解壓縮的歸檔檔案儲存目錄的路徑。如果WITH_ANT
未設定或使用特殊值設定system
,則構建會假定中存在二進位制螞蟻$PATH
。 -
是否為支援它的編譯器啟用AddressSanitizer。預設為關閉。
-
是否啟用
-fsanitize-address-use-after-scope
用於範圍後使用檢測的AddressSanitizerClang標誌。預設為關閉。要使用此選項,-DWITH_ASAN
還必須啟用。 -
-DWITH_AUTHENTICATION_LDAP=
bool
如果無法構建LDAP認證外掛,是否報告錯誤:
-
如果禁用此選項(預設設定),則在找到所需的標頭檔案和庫的情況下將構建LDAP外掛。如果不是,則CMake會顯示一條註釋。
-
如果啟用此選項,則找不到所需的標頭檔案和庫會導致CMake產生錯誤,從而阻止構建伺服器。
-
-
-DWITH_AUTHENTICATION_PAM=
bool
是否為包含此外掛的源樹構建PAM身份驗證外掛。(請參見第6.4.1.5節“ PAM可插入身份驗證”。)如果指定了該選項並且無法編譯外掛,則構建將失敗。
-
Amazon Web Services軟體開發套件的位置。
-
Boost庫是構建MySQL所必需的。這些CMake選項可控制庫源位置以及是否自動下載:
-
-DWITH_BOOST=
指定Boost庫目錄位置。也可以通過設定path_name
BOOST_ROOT
或WITH_BOOST
環境變數來指定Boost位置。-DWITH_BOOST=system
也被允許,並指示在標準位置的編譯主機上安裝了正確版本的Boost。在這種情況下,將使用已安裝的Boost版本,而不是MySQL原始碼發行版中包含的任何版本。 -
-DDOWNLOAD_BOOST=
指定如果指定位置不存在Boost源,是否下載。預設值為bool
OFF
。 -
-DDOWNLOAD_BOOST_TIMEOUT=
下載Boost庫的超時時間(以秒為單位)。預設值為600秒。seconds
例如,如果您通常構建MySQL並將物件輸出放置在
bld
MySQL源樹的子目錄中,則可以使用Boost進行如下構建:mkdir bld cd bld cmake .. -DDOWNLOAD_BOOST=ON -DWITH_BOOST=$HOME/my_boost
這將使Boost下載到主
my_boost
目錄下的目錄中。如果所需的Boost版本已經存在,則無需下載。如果所需的Boost版本更改,則下載較新的版本。如果已經在本地安裝Boost,並且編譯器自己找到了Boost標頭檔案,則可能不必指定前面的CMake選項。但是,如果MySQL所需的Boost版本更改並且本地安裝的版本尚未升級,則可能存在構建問題。使用CMake選項可以使您成功構建。
使用上述允許Boost下載到指定位置的設定,當所需的Boost版本更改時,您需要刪除該
bld
資料夾,重新建立該資料夾,然後再次執行cmake步驟。否則,可能不會下載新的Boost版本,並且編譯可能會失敗。 -
-
-DWITH_CLIENT_PROTOCOL_TRACING=
bool
是否將客戶端協議跟蹤框架構建到客戶端庫中。預設情況下,啟用此選項。
有關編寫協議跟蹤客戶端外掛的資訊,請參見第29.2.4.11節“編寫協議跟蹤外掛”。
另請參閱
WITH_TEST_TRACE_PLUGIN
選項。 -
curl庫的位置。
curl_type
可以是system
(使用系統捲曲庫)或路徑名捲曲庫。 -
是否包括除錯支援。
通過除錯支援配置MySQL,可以
--debug="d,parser_debug"
在啟動伺服器時使用該選項。這將導致用於處理SQL語句的Bison解析器將解析器跟蹤轉儲到伺服器的標準錯誤輸出。通常,此輸出將寫入錯誤日誌。InnoDB
儲存引擎的同步除錯檢查在下定義,UNIV_DEBUG
在使用WITH_DEBUG
選項編譯除錯支援時可用。編譯除錯支援後,innodb_sync_debug
可使用配置選項啟用或禁用InnoDB
同步除錯檢查。啟用
WITH_DEBUG
還啟用除錯同步。此工具用於測試和除錯。編譯時,預設情況下在執行時禁用“除錯同步”。要啟用它,請使用選項啟動mysqld,其中超時值大於0。(預設值為0,禁用除錯同步。)成為各個同步點的預設超時。--debug-sync-timeout=
N
N
N
InnoDB
使用WITH_DEBUG
選項編譯除錯支援時,可以使用儲存引擎的同步除錯檢查。有關“除錯同步”工具以及如何使用同步點的說明,請參見《MySQL內部知識:測試同步》。
-
-DWITH_DEFAULT_FEATURE_SET=
bool
是否使用中的標誌
cmake/build_configurations/feature_set.cmake
。此選項已在MySQL 8.0.22中刪除。 -
使用哪個
libedit
/editline
庫。允許的值為bundled
(預設值)和system
。 -
-DWITH_ICU={
icu_type
|path_name
}MySQL使用Unicode國際元件(ICU)支援正則表示式操作。該
WITH_ICU
選項指示要包括的ICU支援的型別或要使用的ICU安裝的路徑名。-
icu_type
可以是以下值之一:-
bundled
:使用與發行版捆綁在一起的ICU庫。這是預設設定,並且是Windows唯一受支援的選項。 -
system
:使用系統ICU庫。
-
-
path_name
是要使用的ICU安裝的路徑名。這可能比使用icu_type
值更好,system
因為它可以防止CMake檢測和使用系統上安裝的較舊或錯誤的ICU版本。(另一種允許執行相同操作的方法是將設定WITH_ICU
為system
,並將CMAKE_PREFIX_PATH
選項設定為path_name
。)
-
-
-DWITH_INNODB_EXTRA_DEBUG=
bool
是否包括額外的InnoDB除錯支援。
啟用
WITH_INNODB_EXTRA_DEBUG
將啟用額外的InnoDB除錯檢查。此選項僅在啟用後WITH_DEBUG
才能啟用。 -
googlemock發行版的路徑,用於基於Google Test的單元測試。選項值是分發Zip檔案的路徑。或者,將
WITH_GMOCK
環境變數設定為路徑名。也可以使用-DENABLE_DOWNLOADS=1
,CMake將從GitHub下載發行版。如果您構建的MySQL沒有基於Google Test的單元測試(通過配置wihout
WITH_GMOCK
),則CMake會顯示一條訊息,指示如何下載它。 -
是否生成memcached共享庫(
libmemcached.so
和innodb_engine.so
)。 -
是否與連結
-ljemalloc
。如果啟用,內建malloc()
,calloc()
,realloc()
,和free()
程式將被禁用。預設值為OFF
。該選項是在MySQL 8.0.16中新增的。
-
是否構建
keyring_file
外掛隨附的測試程式。預設值為OFF
。測試檔案的原始碼位於plugin/keyring/keyring-test
目錄中。 -
libevent
使用哪個庫。允許的值為bundled
(預設值)system
,和yes
。如果指定system
或yes
,libevent
則使用系統庫(如果存在)。如果找不到系統庫,libevent
則使用捆綁的庫。該libevent
庫是InnoDB
memcached必需的。 -
是否包括
libwrap
(TCP包裝器)支援。 -
是否啟用LOCK_ORDER工具。預設情況下,此選項為禁用狀態,伺服器版本不包含任何工具。如果啟用了工具,則可以使用LOCK_ORDER工具,如第29.5.3節“ LOCK_ORDER工具”所述,可以使用LOCK_ORDER工具。
注意WITH_LOCK_ORDER
啟用該選項後,MySQL構建需要flex程式。該選項是在MySQL 8.0.17中新增的。
-
是否執行不使用AddressSanitizer的LeakSanitizer。預設值為
OFF
。該選項是在MySQL 8.0.16中新增的。
-
如果編譯器支援,則是否啟用連結時間優化器。
OFF
除非FPROFILE_USE
啟用,否則預設為。該選項是在MySQL 8.0.13中新增的。
-
該
WITH_LZ4
指示的源zlib
支援:-
bundled
:使用lz4
與發行版捆綁在一起的庫。這是預設值。 -
system
:使用系統lz4
庫。如果WITH_LZ4
將設定為該值,則不會構建lz4_decompress實用程式。在這種情況下,可以改用systemlz4命令。
-
-
是否為支援它的編譯器啟用MemorySanitizer。預設為關閉。
為了使此選項生效(如果啟用),還必須在啟用該選項的情況下編譯連結到MySQL的所有庫。
-
-DWITH_MECAB={disabled|system|
path_name
}使用此選項編譯MeCab解析器。如果已將MeCab安裝到其預設安裝目錄,請設定
-DWITH_MECAB=system
。該system
選項適用於使用本機軟體包管理實用程式從源或二進位制檔案執行的MeCab安裝。如果已將MeCab安裝到自定義安裝目錄,請指定MeCab安裝的路徑。例如,-DWITH_MECAB=/opt/mecab
。如果該system
選項不起作用,則在所有情況下都應指定MeCab安裝路徑。有關相關資訊,請參見第12.9.9節“ MeCab全文分析器外掛”。
-
是否啟用Visual Studio CRT記憶體洩漏跟蹤。預設值為
OFF
。 -
是否使用X外掛支援進行構建。預設
ON
。請參見第20章,將MySQL用作文件儲存。 -
明確設定NUMA記憶體分配策略。CMake
WITH_NUMA
根據當前平臺是否NUMA
支援設定預設值。對於不支援NUMA的平臺,CMake的行為如下:-
如果沒有NUMA選項(正常情況),CMake將繼續正常執行,僅產生以下警告:缺少NUMA庫或所需的版本不可用
-
使用
-DWITH_NUMA=ON
,CMake會因以下錯誤而中止:缺少NUMA庫或所需的版本不可用
-
-
使用哪個協議緩衝區包。
protobuf_type
可以是以下值之一:-
bundled
:使用與發行版捆綁在一起的軟體包。這是預設值。(可選)用於INSTALL_PRIV_LIBDIR
修改動態Protobuf庫目錄。 -
system
:使用系統上安裝的軟體包。
其他值將被忽略,後退為
bundled
。 -
-
是否構建快速開發週期的外掛。啟用後,將
rapid
在構建樹中建立一個包含這些外掛的目錄。禁用後,不會rapid
在構建樹中建立任何目錄。ON
除非rapid
目錄從源樹中刪除,否則預設值為,在這種情況下預設值為OFF
。 -
-DWITH_RAPIDJSON=
rapidjson_type
要包括的RapidJSON庫支援的型別。
rapidjson_type
可以是以下值之一:-
bundled
:使用與發行版捆綁在一起的RapidJSON庫。這是預設值。 -
system
:使用系統RapidJSON庫。需要版本1.1.0或更高版本。
該選項是在MySQL 8.0.13中新增的。
-
-
要包括的LZMA庫支援的型別。
lzma_type
可以是以下值之一:-
bundled
:使用與發行版捆綁在一起的LZMA庫。這是預設值。 -
system
:使用系統LZMA庫。
此選項已在MySQL 8.0.16中刪除。
-
-
要包括的RE2庫支援的型別。
re2_type
可以是以下值之一:-
bundled
:使用與發行版捆綁在一起的RE2庫。這是預設值。 -
system
:使用系統RE2庫。
從MySQL 8.0.18開始,MySQL不再使用RE2庫,並且刪除了此選項。
-
-
是否建立MySQL路由器。預設值為
ON
。該選項是在MySQL 8.0.16中新增的。
-
-DWITH_SSL={
|ssl_type
path_name
}為了支援加密連線,用於生成隨機數的熵以及其他與加密相關的操作,必須使用SSL庫來構建MySQL。此選項指定要使用的SSL庫。
-
ssl_type
可以是以下值之一:-
system
:使用系統OpenSSL庫。這是預設值。在macOS和Windows上,使用可以
system
配置MySQL以進行構建,就像呼叫CMake時path_name
指向指向手動安裝的OpenSSL庫一樣。這是因為它們沒有系統SSL庫。在macOS上,brew install openssl安裝到/usr/local/opt/openssl
並system
會找到它。在Windows上,它檢查%ProgramFiles%/ OpenSSL,%ProgramFiles%/ OpenSSL-Win32,%ProgramFiles%/ OpenSSL-Win64和C:/ OpenSSL,C:/ OpenSSL-Win32和C:/ OpenSSL-Win64。 -
yes
:這是的同義詞system
。
-
-
path_name
是要使用的OpenSSL安裝的路徑名。最好使用ssl_type
值of,system
因為它可以防止CMake檢測和使用系統上安裝的較舊或錯誤的OpenSSL版本。(另一種允許執行相同操作的方法是將設定WITH_SSL
為system
,並將CMAKE_PREFIX_PATH
選項設定為path_name
。)
有關配置SSL庫的更多資訊,請參見第2.9.6節“配置SSL庫支援”。
-
-
是否啟用安裝systemd支援檔案。預設情況下,此選項處於禁用狀態。啟用後,將安裝systemd支援檔案,並且不會安裝諸如mysqld_safe和System V初始化指令碼之類的指令碼。在無法使用systemd的平臺上,啟用會
WITH_SYSTEMD
導致CMake錯誤。有關使用systemd的更多資訊,請參見第2.5.9節“使用systemd管理MySQL Server”。該部分還包括有關指定
[mysqld_safe]
選項組中先前指定的選項的資訊。因為使用systemd時未安裝mysqld_safe,所以必須以其他方式指定此類選項。 -
此選項充當“保護傘”選項來設定
system
的以下任一值CMake的選項未明確設定:WITH_CURL
,WITH_EDITLINE
,WITH_ICU
,WITH_LIBEVENT
,WITH_LZ4
,WITH_LZMA
,WITH_PROTOBUF
,WITH_RE2
,WITH_SSL
,WITH_ZLIB
,WITH_ZSTD
。 -
是否構建測試協議跟蹤客戶端外掛(請參見第29.2.4.11.1節“使用測試協議跟蹤外掛”)。預設情況下,此選項處於禁用狀態。除非啟用該選項,否則啟用此選項無效
注意WITH_CLIENT_PROTOCOL_TRACING
。如果MySQL同時配置了這兩個選項,則將使用libmysqlclient
內建的測試協議跟蹤外掛來構建客戶端庫,並且所有標準MySQL客戶端都將載入該外掛。但是,即使啟用了測試外掛,預設情況下它也不起作用。使用環境變數可以控制外掛。請參見第29.2.4.11.1節“使用測試協議跟蹤外掛”。不要不啟用
WITH_TEST_TRACE_PLUGIN
,如果你想使用自己的協議跟蹤的外掛,因為只有一個這樣的外掛可以在同一時間被載入並出現錯誤嘗試載入第二個選項。如果已經構建了啟用了測試協議跟蹤外掛的MySQL以檢視其工作原理,則必須在沒有MySQL的情況下重新構建MySQL,然後才能使用自己的外掛。有關編寫跟蹤外掛的資訊,請參見第29.2.4.11節“編寫協議跟蹤外掛”。
-
是否為支援它的編譯器啟用ThreadSanitizer。預設為關閉。
-
是否為支援它的編譯器啟用“未定義行為清理器”。預設為關閉。
-
如果啟用,請使用單元測試編譯MySQL。除非未編譯伺服器,否則預設值為ON。
-
為聯結器/ ODBC啟用unixODBC支援。
-
是否在Valgrind標頭檔案中進行編譯,這會將Valgrind API暴露給MySQL程式碼。預設值為
OFF
。要生成可識別Valgrind的除錯版本,
-DWITH_VALGRIND=1
通常與結合使用-DWITH_DEBUG=1
。請參閱構建除錯配置。 -
某些功能要求伺服器使用壓縮庫支援構建,例如
COMPRESS()
和UNCOMPRESS()
功能,以及客戶端/伺服器協議的壓縮。該WITH_ZLIB
指示的源zlib
支援:-
bundled
:使用zlib
與發行版捆綁在一起的庫。這是預設值。 -
system
:使用系統zlib
庫。如果WITH_ZLIB
將此值設定為,則不會構建zlib_decompress實用程式。在這種情況下,可以改為使用系統openssl zlib命令。
-
-
使用該
zstd
演算法的連線壓縮(請參見第4.2.8節“連線壓縮控制”)需要使用zstd
庫支援構建伺服器。該WITH_ZSTD
指示的源zstd
支援:-
bundled
:使用zstd
與發行版捆綁在一起的庫。這是預設值。 -
system
:使用系統zstd
庫。
該選項是在MySQL 8.0.18中新增的。
-
編譯器標誌
-
C編譯器的標誌。
-
C ++編譯器的標誌。
-
-DWITH_DEFAULT_COMPILER_OPTIONS=
bool
是否使用中的標誌
注意cmake/build_configurations/compiler_options.cmake
。所有的優化標誌都是由MySQL構建團隊精心選擇和測試的。覆蓋它們會導致意外的結果,後果自負。
要指定自己的C和C ++編譯器標誌,對於不影響優化的標誌,請使用CMAKE_C_FLAGS
和CMAKE_CXX_FLAGS
CMake選項。
提供自己的編譯器標誌時,您可能還需要指定CMAKE_BUILD_TYPE
。
例如,要在64位Linux機器上建立32位發行版,請執行以下操作:
mkdir bld
cd bld
cmake .. -DCMAKE_C_FLAGS=-m32 \
-DCMAKE_CXX_FLAGS=-m32 \
-DCMAKE_BUILD_TYPE=RelWithDebInfo
如果設定影響優化的標誌(),則必須設定和/或選項,其中對應於該值。要為預設的構建型別()指定其他優化,請設定和選項。例如,要在具有除錯符號的Linux上進行編譯,請執行以下操作:-O
number
CMAKE_C_FLAGS_
build_type
CMAKE_CXX_FLAGS_
build_type
build_type
CMAKE_BUILD_TYPE
RelWithDebInfo
CMAKE_C_FLAGS_RELWITHDEBINFO
CMAKE_CXX_FLAGS_RELWITHDEBINFO
-O3
cmake .. -DCMAKE_C_FLAGS_RELWITHDEBINFO="-O3 -g" \
-DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O3 -g"
用於編譯NDB群集的CMake選項
在構建具有NDB Cluster支援的MySQL 8.0源時,可以使用以下選項。
-
使用安裝在由指示的系統目錄中的memcached(1.6版或更高版本)執行構建
dir_name
。此安裝中用於構建的檔案包括memcached二進位制檔案,標頭檔案和庫,以及memcached_utilities
庫和標頭檔案engine_testapp.h
。ndbmemcache
使用捆綁的記憶體快取源(WITH_BUNDLED_MEMCACHED
選件)進行構建時,必須將此選項保持未設定狀態。換句話說,預設情況下使用捆綁的來源。雖然從外部源編譯記憶體快取時可以使用其他CMake選項(例如,用於SASL授權和提供
dtrace
支援),但當前未為與NDB Cluster捆綁在一起的記憶體快取源啟用這些選項。 -
-DWITH_BUNDLED_LIBEVENT={ON|OFF}
libevent
在ndbmemcached
支援的情況下構建NDB群集時,請使用NDB群集源中包含的資源。預設啟用。OFF
導致libevent
改為使用系統。 -
-DWITH_BUNDLED_MEMCACHED={ON|OFF}
構建NDB群集源樹中包含的memcached源,然後在構建
ndbmemcache
引擎時使用生成的memcached伺服器。在這種情況下,make install將memcached二進位制檔案放置在安裝bin
目錄中,並將ndbmemcache
引擎共享庫檔案ndb_engine.so
放置在安裝lib
目錄中。預設情況下,此選項為ON。
-
設定用於構建NDB Cluster Connector for Java的類路徑。預設為空。如果
-DWITH_NDB_JAVA=OFF
使用此選項,則將其忽略。 -
在
NDB
核心中啟用錯誤注入。僅用於測試;不適用於構建生產二進位制檔案。預設值為OFF
。 -
-DWITH_NDBCLUSTER_STORAGE_ENGINE={ON|OFF}
這是的別名
WITH_NDBCLUSTER
。 -
建立並連結對mysqld中的
NDB
(NDBCLUSTER
)儲存引擎的支援。預設值為。ON
-
構建多執行緒資料節點可執行檔案ndbmtd。預設值為
ON
。 -
預設情況下,在使用此選項構建的mysqld中啟用二進位制日誌記錄。預設為開。
-
啟用構建NDB群集二進位制檔案的除錯版本。預設關閉。
-
啟用通過Java支援(包括)構建NDB Cluster
ClusterJ
。預設情況下,此選項為ON。如果您不希望在Java支援下編譯NDB Cluster,則必須通過指定
-DWITH_NDB_JAVA=OFF
在執行CMake時顯式禁用它。否則,如果找不到Java,則構建的配置將失敗。 -
使NDB群集管理伺服器(ndb_mgmd)
port
預設情況下使用此伺服器。如果未設定此選項,則預設情況下,結果管理伺服器將嘗試使用埠1186。 -
如果啟用,請包括一組NDB API測試程式。預設為關閉。
-
-DWITH_PLUGIN_NDBCLUSTER={ON|OFF}
的別名
WITH_NDBCLUSTER
。