• MySQL编译成就?


     作者:天极软件 来历:天极软件

    一切MySQL措施在Solaris上运用gcc编译而且没有任何警告。在其他系统上,因为系统包罗文件的差别大要会产生发火警告。对于运用MIT-pthreads时产生发火的警告,见4.9 MIT-pthreads 注意事项。其他成就,反省上面的表。

    良多成就的经管方案触及重新设置配备部署。如果你的确需求重新设置配备部署,注意下列事项:

    • 如果configure在它已经被运转了今后运转,它可以运用先前汇集的信息。这个信息被存储在“config.cache”外貌。当configure启动时,它寻觅该文件而且如果它存在,假定信息依然是准确的,读入它的内容。当你重新设置配备部署时,该假定是有效的。
    • 每次你运转configure时间,你必须运转make再重新编译。然则, 你大要想要把先前布局的老的方针文件删除,因为他们运用不同的设置配备部署选项被编译。

    为了防止运用旧的设置配备部署信息或方针文件,在重新运转configure前运转这些呼吁:

    shell>rm  config.cache 
    shell>make clean
    

    此外,你可以运转make distclean

    下表刻画了一些最常产生发火的编译MySQL的成就:

    • 如果在编译“sql_yacc.cc”时,你失失落如下的一个错误,你大要是存储器或互换空间溢出:
      Internal compiler error: program cc1plus got fatal signal 11
        或
      Out of virtual memory
        或
      Virtual memory exhausted
      

      该成便是gcc要求大年夜量的内存编译带有嵌入函数(inline function)的“sql_yacc.cc”。试试以--with-low-memory选项运转configure

      shell>./configure -- with-low-memory

      如果你正在运用gcc,该选项使得将-fno-inline加到编译行,如果你正在运用其他的编译器,则插足-O0。你应该试一试--with-low-memory选项,即便你有特别多的存储器和互换空间,而你认为不能大要运转得溢出。这个成就乃至在很小气的硬件设置配备部署的系统上出现,平常用--with-low-memory选项批改它。

    • 缺省地,configure遴选c 作为编译器名字并用-lg 选项的GNU c 链接。如果你正在运用gcc,这个特性在设置配备部署时代招致如下成就:
      configure: error: installation or configuration problem:
      C   compiler cannot create executables.
      

      你大要也在编译时代看到g libg libstdc 干系的成就。这些成就的一个缘由是你大要没有g ,或你大要有g 但无libg libstdc 。看一下“config.log”文件。它应该包罗你的c 编译器不能任务的准确缘由!为了经管这些成就,你可以运用gcc作为你的C 编译器。试试设置状况变量CXX"gcc -O3"。歧:

      shell>CXX="gcc -O3" ./configure

      它能任务,因为gccg 一样编译C 源代码,但缺省地它不链接libg libstdc 。经管这些成就的其他法子虽然是装配g libg libstdc

    • 如果你的编译以上面任何错误而失败,你必须晋级make版本到GNUmake
      making all in mit-pthreads 
      make: Fatal error in reader: Makefile, line 18: 
      Badly formed macro assignment 
       or 
      make: file `Makefile' line 18: Must be a separator (: 
       or 
      pthread.h: No such file or directory
      

      Solaris和FreeBSD已知make措施有成就。GNU make版本3.75已知能任务。

    • 如果你想要界说你的C或C 编译器所运用的标记,把标记加到CFLAGSCXXFLAGS状况变量中即可。你也能运用CCCXX来指定编译器名字。歧:
      shell>CC=gcc 
      shell>CFLAGS=-O6 
      shell>CXX=gcc 
      shell>CXXFLAGS=-O6 
      shell>export CC  CFLAGS  CXX  CXXFLAGS
      

      对于已经晓得在不同系统上有效的标记界说列表,见4.14 TcX 二进制代码。

    • 如果你失失落象如下的一条错误动静,你需求晋级你的gcc编译器:
      client/libmysql.c:273: parse error brfore '__attribute__'

      gcc2.8.1已知可以任务,然则我们保举运用egcs1.0.3a或更新。

    • 如果你在编译mysqld时表现歧上面的那些错误, configure没有准确地检测传到accept()getsockname()getpeername()开头参数的典范榜样:
      cxx: Error: mysqld.cc, line 645: In this statement, the referenced
           type of the pointer value "&length" is "unsigned long", which
           is not compatible with "int".
      new_sock = accept(sock, (struct sockaddr *)&cAddr, &length);
      

      为了批改它,编纂“config.h”文件(它由configure天生)。寻觅这些行:

      /* Define as the base type of the last arg to accept */
      #define SOCKET_SIZE_TYPE XXX
      

      变更XXXsize_tint,这取决于你的把持系统。(注意:你每次运转configure都必须如许做,因为configure从新天生“config.h”。)

    • “sql_yacc.cc”文件由“sql_yacc.yy”天生。平常布局进程不需求创造“sql_yacc.cc”,因为MySQL有一个已经天生的拷贝,然则,如果你的确需求再建立它,你大要碰到这个错误:
      "sql_yacc.yy", line xxx fatal: default action causes potential...
      

      这是一个你的yacc版本不完竣的迹象。你大要需求装配bison(GNU 版本yacc)并运用它。

    • 如果你需求调试mysqldMySQL客户,运转configure,运用--with-debug选项,然后重新编译而且链接你客户措施到新的客户库。见G.2 调试一个MySQL客户。





    版权声明: 原创作品,许可转载,转载时请务必以超链接方法标明文章 原始来由 、作者信息和本声明。不然将究查规则责任。

  • 相关阅读:
    远程调试 ASP.NET MVC 项目
    两行代码搞定 JavaScript 的日期验证
    ASP.NET MVC 静态资源打包和压缩问题小记
    CodeSmith7连接Mysql
    网站开发烦心记-1
    感悟还是教训,或者。。。
    可以断点续传的scp
    CTP报单状态
    android studio 0.8.8下载
    期货结算单查询
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1975276.html
Copyright © 2020-2023  润新知