CMake错误:源目录“/usr/src/MySQL-5 . 6 . 36/-dwith _ extra _ charset = all”不存在。 指定-使用帮助,或按键盘图形用户界面上的帮助按钮。

本文解决了一个常见的CMake配置问题,即在尝试编译MySQL源代码时遇到的源目录不存在错误。通过调整配置命令中的参数,成功指定了正确的源码路径和额外的字符集选项。

问题

CMake Error: The source directory “/usr/src/mysql-5.6.36/-dwith_extra_charsets=all” does not exist.
Specify --help for usage, or press the help button on the CMake GUI.
答案
配置时候大写
cmake -DCMAKE_INSTALL_PRFIX=/usr/local/mysql -DSYSCONFIDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all

[root@mysql-2 mysql-8.0.42]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ \ -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ -DMYSQL_DATADIR=/data/mysql/ \ -DSYSCONFDIR=/etc \ -DMYSQL_USER=mysql \ -DMYSQL_TCP_PORT=3306 \ -DWITH_XTRADB_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_EXTRA_CHARSETS=1 \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DEXTRA_CHARSETS=all \ -DWITH_BIG_TABLES=1 \ -DWITH_DEBUG=0 \ -DWITH_BOOST=./boost/ \ -DFORCE_INSOURCE_BUILD=1 -- Running cmake version 3.26.5 -- Found Git: /usr/bin/git (found version "2.47.1") -- This is .el9. as found from 'rpm -qf /' -- Looking for a devtoolset compiler -- Using /opt/rh/gcc-toolset-12/root/usr/bin/gcc -- Using /opt/rh/gcc-toolset-12/root/usr/bin/g++ -- CMAKE_MODULE_PATH is /usr/local/mysql-8.0.42/cmake -- MySQL 8.0.42 -- The C compiler identification is GNU 12.2.1 -- The CXX compiler identification is GNU 12.2.1 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /opt/rh/gcc-toolset-12/root/usr/bin/gcc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /opt/rh/gcc-toolset-12/root/usr/bin/g++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Source directory /usr/local/mysql-8.0.42 -- Binary directory /usr/local/mysql-8.0.42 CMake Warning at CMakeLists.txt:637 (MESSAGE): This is an in-source build -- CMAKE_GENERATOR: Unix Makefiles -- Looking for SHM_HUGETLB -- Looking for SHM_HUGETLB - found -- Looking for sys/types.h -- Looking for sys/types.h - found -- Looking for stdint.h -- Looking for stdint.h - found -- Looking for stddef.h -- Looking for stddef.h - found -- Check size of void * -- Check si
08-05
vars: mysql_user: mysql base_dir: /usr/local/mysql mysql_version: 5.7.44 mysql_src_dir: /usr/src/mysql-{{ mysql_version }} mysql_tar_path: /usr/src/mysql-{{ mysql_version }}.tar.gz - name: 安装编译依赖 yum: name: - gcc - gcc-c++ - make - ncurses-devel # MySQL终端交互依赖 - bison # 语法分析器依赖 - libaio-devel # 异步IO依赖 - perl # 脚本支持依赖 - perl-devel - openssl-devel # 加密功能依赖 - wget # 确保wget可用(用于下载) state: present - name: 下载CMake 3.10.2(兼容MySQL 5.7且稳定) get_url: url: https://cmake.org/files/v3.10/cmake-3.10.2.tar.gz dest: /usr/src/cmake-3.10.2.tar.gz mode: '0644' timeout: 600 # 增大超时时间,避免大文件下载失败 - name: 解压CMake源码 unarchive: src: /usr/src/cmake-3.10.2.tar.gz dest: /usr/src/ remote_src: yes creates: /usr/src/cmake-3.10.2 # 目录存在则跳过 - name: 编译安装CMake shell: | cd /usr/src/cmake-3.10.2 ./configure --prefix=/usr/local/cmake make && make install args: creates: /usr/local/cmake/bin/cmake # 已安装则跳过 - name: 创建CMake软链接到系统路径 file: src: /usr/local/cmake/bin/cmake dest: /usr/bin/cmake state: link force: yes - name: 验证CMake版本 command: cmake --version register: cmake_ver changed_when: false - name: 显示CMake版本 debug: msg: "当前CMake版本: {{ cmake_ver.stdout_lines[0] }}" - name: 创建mysql用户组 group: name: "{{ mysql_user }}" state: present - name: 创建mysql用户 user: name: "{{ mysql_user }}" group: "{{ mysql_user }}" state: present create_home: False shell: /sbin/nologin - name: 下载MySQL {{ mysql_version }}源码包 get_url: url: https://downloads.mysql.com/archives/get/p/23/file/mysql-{{ mysql_version }}.tar.gz dest: "{{ mysql_tar_path }}" mode: '0644' timeout: 1200 # MySQL源码包较大,延长超时时间 validate_checksum: no # 可选,若校验和错误可临时关闭 - name: 解压MySQL源码包 unarchive: src: "{{ mysql_tar_path }}" dest: /usr/src/ remote_src: yes creates: "{{ mysql_src_dir }}" # 目录存在则跳过解压 - name: CMake配置MySQL编译参数 shell: | cd {{ mysql_src_dir }} && \ cmake \ -DCMAKE_INSTALL_PREFIX={{ base_dir }} \ -DSYSCONFDIR=/etc \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_EXTRA_CHARSETS=all args: creates: "{{ mysql_src_dir }}/Makefile" # 生成Makefile后跳过 - name: 编译MySQL源码 shell: cd {{ mysql_src_dir }} && make -j $(nproc) # 使用多核心加速编译 args: creates: "{{ mysql_src_dir }}/sql/mysqld" # 编译产物存在则跳过 - name: 安装MySQL shell: cd {{ mysql_src_dir }} && make install args: creates: "{{ base_dir }}/bin/mysqld" # 安装完成则跳过 - name: 设置MySQL目录权限 file: path: "{{ base_dir }}" owner: "{{ mysql_user }}" group: "{{ mysql_user }}" recurse: yes - name: 移除默认my.cnf(若存在) file: path: /etc/my.cnf state: absent - name: 复制mysql服务脚本 copy: src: "{{ mysql_src_dir }}/support-files/mysql.server" dest: "{{ base_dir }}/bin/mysqld.sh" remote_src: yes mode: '0755' - name: 拷贝mysql的配置文件 template: src: my.cnf.j2 dest: /etc/my.cnf owner: root group: root - name: 拷贝mysql服务文件 template: src: mysqld.service.j2 dest: /usr/lib/systemd/system/mysqld.service owner: root group: root - name: 创建mysql日志存放路径 file: dest: "{{ base_dir }}/logs" state: directory owner: "{{ mysql_user }}" group: "{{ mysql_user }}" 检查一下格式
最新发布
08-20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值