• 欢迎访问VPS岛网站,国外VPS,国内VPS,国外服务器,国内服务器,服务器主机,测评及优惠码,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站 QQ群

MySQL5.7.30源码编译指定RPATH

mysql技术 fengyuzaitu 63次浏览 已收录 0个评论

前言什么是RPATH?

        在Linux环境下,使用动态链接的程序在运行时会自动链接 ld.so 这个库(OS X上是 dyld),然后通过 ld.so 来查找链接其它的库。而 RPATH 就是编译的时候链接到执行文件的链接库路径。OS X在 RPATH 的设置上和Linux还是有点出入的,OS X的 RPATH 采用的是绝对路径。
ld.so 搜索路径的优先级是这样的:
1. RPATH ,编译链接时加入 -rpath 参数指明所谓的 RUNPATH ,这样可执行文件(或者依赖其他动态链接库的动态链接库)就能告诉 ld.so 到哪里去搜索对应的动态链接库了。
2. LD_LIBRARY_PATH ,对于没有设定 RPATH 的可执行文件或者动态链接库,我们可以用 LD_LIBRARY_PATH 这个环境变量通知 ld.so 往哪里查找链接库。
3. /etc/ld.so.conf ,系统对 ld.so 的路径配置文件。
4. /usr/lib 、 /lib 和 /usr/local/lib ,系统默认路径。

场景

        Linux编译MySQL5.7.30源码编译指定RPATH的路径为当前路径(.), 方便将编译的库文件移植到一台没有安装GCC7.0版本的系统上,因为默认的CentOS7.6采用的GCC是4.8版本,根本无法编译和运行MySQL5.7

方案

        修改顶层目录文件CMakeLists.txt

     72 # First, decide about build type (debug or release)
     73 # If cmake is invoked with -DCMAKE_BUILD_TYPE,
     74 # respect user wishes and do not (re)define CMAKE_BUILD_TYPE. If WITH_DEBUG
     75 # is given, set CMAKE_BUILD_TYPE = Debug. Otherwise, use Relwithdebinfo.
     76 SET(CMAKE_INSTALL_RPATH “./”)
     77 IF(DEFINED CMAKE_BUILD_TYPE)
     78   SET(HAVE_CMAKE_BUILD_TYPE TRUE)
     79 ENDIF()

添加76行

附带编译指令

cmake ../ -DCMAKE_INSTALL_PREFIX=/opt/mysql  -DMYSQL_DATADIR=/data/data -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 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/src/boost/boost_1_59_0


VPS岛 的文章和资源来自互联网,仅作为参考资料,如果有侵犯版权的资源请尽快联系站长,我们会在24h内删除有争议的资源。丨 转载请注明MySQL5.7.30源码编译指定RPATH
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址