首页 >> 读书频道 >> 电脑 >> 编译问题?
 
· 安装MySQL二进制代码
· 安装布局
· 怎样和何时发布更新版本
· 使用MySQL哪个版本
· MySQL 支持的操作系
· 怎样报告错误或问题
· mSQL 数据库函数库
· 杂项函数库
· mhash 哈稀函数库
· mcrypt 编码函数库
· 数学运算函数库
· LDAP 目录协议函数库
 
· 高层的死角[作者:森村诚
· 国家六部门联合发文
· 红楼梦:120回全本[清
· 常见图像文件格式详解
· 拉封丹寓言
· 电视剧《刁蛮公主》下载和
· 美容养颜手册
· 加油金顺剧情分集介绍完整
· 素质教育在美国
· 全唐诗卷四十六
· 韩剧《布拉格恋人》剧情介
· 夜航船[作者:明·张岱]
 
· (出租)中动商场部分及写
· (出租)中动动漫基地&#
· 喜剧学院
· 《善德女王》剧情介绍
· 魔女18号 剧情
· 丑女无敌剧情介绍
· 魔女幼熙剧情介绍
· 龙游天下剧情介绍
· 震撼世界的七日剧情介绍
· 静静的白桦林剧情介绍
· 心情日记—老公今天我想对
· 旗舰剧情介绍
欢迎来到月影社区!如果您觉得这里不错,请推荐给您的朋友们。月影社区:http://wf66.com/

编译问题?


查看有无更新版本

关键字:MySQL 2006-9-22

 

所有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

它能工作,因为gcc象g++一样编译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++编译器所使用的标志,把标志加到CFLAGS和CXXFLAGS环境变量中即可。你也能使用CC和CXX来指定编译器名字。例如: 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

更改XXX为size_t或int,这取决于你的操作系统。(注意:你每次运行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)并使用它。 如果你需要调试mysqld或MySQL客户,运行configure,使用--with-debug选项,然后重新编译并且链接你客户程序到新的客户库。见G.2 调试一个MySQL客户。

编译问题?

[ 1 ]
编译问题? num

打印本页 关闭

关于我们版权声明本站导航友情连结作品演示 TOP↑