- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图在cygwin中从源代码构建MySQL的“Connector/C”,但存在一些问题。
-一些背景-
我们可以谈论很多人为什么要在cygwin中使用libmysql
。在这种情况下,使用cygwin工具集在windows平台上进行unix开发更简单。
从我的研究来看,我可以得到一个旧版本(5.1,也许)的连接器来构建OK。但是,当MySQL开发人员从./configure
驱动的构建配置切换到cmake
驱动的构建配置时,cygwin的支持逐渐消失。
MySQL提供下载的源tar-ball版本是6.0.2,所以这就是我正在研究的版本。
-一个(某种)已解决的问题-
我遇到的第一个问题是在dtoa()
中发现了一个不兼容的stdlib.h
重新声明。(许多其他人试图构建各种最新版本,也遇到了这个问题,如果谷歌是任何指南的话。)有各种各样的建议潜伏在网上解决这个问题。我的选择:暂时将stdlib.h
替换为已删除dtoa()
定义的。丑陋,真实。但它起作用了。
(这个“修复”消除了一个早期的编译错误,整个过程运行到链接,在链接中由于明显无关的原因失败。)
-未解决的问题-libmysql
代码依赖于yaSSL
。尽管我给了cmake
参数,但情况似乎是这样的,只有在使用cygwin安装工具/包管理器将-DWITH_OPENSSL=1
包添加到我的环境中之后,才能接受该参数。openssl-devel
似乎在使用“纯虚拟”类成员。从我的(有限的)C++内部结构的知识来看,这意味着编译器隐式地假设特殊符号/函数yaSSL
的声明,这会导致链接器搜索__cxa_pure_virtual()
函数的(单个)定义。
按照代码和构建过程的结构,每个__cxa_pure_virtual()
源实现文件都被编译成一个对象文件。其中许多文件引用了另一个定义(即包含的实现)yaSSL
。在链接阶段,包含定义的每个对象彼此冲突。(因为符号被定义为__cxa_pure_virtual()
,或者更具体地说:
extern "C" {
int __cxa_pure_virtual() {
assert("Pure virtual method called." == "Aborted");
return 0;
}
}
extern
,例如:
CMakeFiles/libmysql.dir/__/extlib/yassl/taocrypt/src/algebra.cpp.o:algebra.cpp:(.text+0x40): multiple definition of `___cxa_pure_virtual'
CMakeFiles/libmysql.dir/__/extlib/yassl/taocrypt/src/aes.cpp.o:aes.cpp:(.text+0x0): first defined here
multiple definition error
的所有定义,但这只是将多个定义错误替换为未定义的引用错误。
__cxa_pure_virtual()
的所有定义都改成了
__cxa_pure_virtual()
,但希望编译器能从内联使用的函数中删除外部引用,这是徒劳的。(我不确定C++何时使用查找表作为间接的一层,但似乎
inline
在这些情况下可能不是一种选择。)如果我记得那个测试的具体结果:它创建了与不定义
inline
的相同结果。
__cxa_pure_virtual()
源代码中寻找纯虚拟函数的用法,但那看起来像一个兔子洞。。。
libmysql
的定义放在一个独立的对象文件中(然后,我将从每个其他对象文件中删除该定义)。
最佳答案
为什么需要用Cygwin构建Connector/C?普通的win32 libmysql.dll不够吗?
让它编译的一些想法:
A:您正在尝试以GCC作为C++编译器编译连接器/ C,最好不要使用C++。
b)克马克。-DSKIP_SSL=1(查看CMakeLists.txt表明它将删除yassl)
是的,MySQL已经放弃了cygwin(而且它已经很多年不支持它了)。我不知道是什么让Oracle重新启用它,他们目前正在削减平台支持(例如HPUX和AIX被放弃)。我个人也不认为Cygwin端口有多大价值,它不是最热门的平台,只要你能使用本地Windows端口。
关于mysql - 无法从cygwin中的源代码构建mysql连接器/c(libmysql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6258898/
我正在使用 HeidiSQL 编辑 MYSQL 数据库,它询问我想使用哪个库进行编辑: libmysql-6.1.dll libmysql.dll 我怎么知道该使用哪一个? 最佳答案 这些可供选择的
我的目标是将 libmySQL 集成到我的可执行文件中,而不是使用 libmySQL.dll。 我使用 VC++ 2008 @ Windows Vista。 我已经从 http://dev.mysql
我用 libmysql 构建了 gearman。 * CPP Flags: -fvisibility=hidden * LIBS: * LDFLAGS
在使用 libmysqlclient 的 C++ 软件中,我尝试将一行插入包含 html 编码字符(例如 é)的表中。该请求如下所示: INSERT INTO mytable ( field ) V
我第一次尝试使用 dbexpress 组件连接到 mysql 我遇到了这个错误 Failure to Connect : Unable to load libmysql.dll 我的delphi版本:
我试图在cygwin中从源代码构建MySQL的“Connector/C”,但存在一些问题。 -一些背景- 我们可以谈论很多人为什么要在cygwin中使用libmysql。在这种情况下,使用cygwin
我在一个简单的多线程应用程序中使用 libmysql,它将在单核嵌入式系统处理器上运行。我读了here客户端库几乎是线程安全的。 我是否需要序列化我的应用程序(例如,使用互斥体)? 最佳答案 取决于你
我尝试使用以下 AHK 库:http://www.autohotkey.com/board/topic/72629-mysql-library-functions/page-1 我根据他们的示例编写了
我已经安装了 MySQL 5.1.49 和 Visual Studio 2008 二进制 QT 4.6.2。我将 Qt 配置如下: C:\Qt>configure -static -no-webkit
我正在尝试为 MySQL 编写一个 C++ 包装器: cannot open input file 'libmysql.lib' 我确实安装了 mySQL 服务器,但我仍然没有 libmysql.li
我正在尝试使用 libwebsocket 构建我的 WebSocket 服务器,我需要在我的代码中使用 libmysql。我已经安装了 libmysql 并能够使用它,但我不知道如何使用 cmake
我刚刚在 Windows Server 2003 32 位上安装了 MySQL。我有 PHP 5.2.6。 当在 cmd 中执行:php -m 获取模块时出现此错误: "PHP Warning: P
我在 Visual C++ 2010 上的项目中使用 MySql C++ 连接器。在链接器->输入->附加依赖项中我编写了mysqlcppconn-static.lib和libmysql.lib。因此
A 使用 -static 选项和 -qt-sql-mysql 编译了 Qt。一切顺利(编译等,它在我的电脑上运行)。但是当我将程序放在另一台计算机上时,我收到消息“找不到 libmysql.dll..
该程序需要 libmysql.dll 它与 libmysql.lib 位于 c:\xampp\mysql\lib 下。在 Visual C++ 设置中,我将 libmysql.lib 添加到 Link
我安装了 "mysql-installer-community-8.0.16.0.msi" .安装期间一切顺利。我什至可以为我的项目创建一个新的数据库和表。我在 C++ 中使用它。编译和链接一切顺利。
我用 C++ 制作了一个应用程序,它使用 mysql 连接到服务器,但是当我将它发送给我的 friend 进行测试时,他们得到的是:libmysql.dll 不是为在 Windows 上运行而设计的,
当使用 Perl 代码访问 db MYSQL 时,你有没有遇到过这个错误:过程入口点 mysql_get_parameters 不能位于 libmysql_.dll 中? 我已经将libmysql.d
我尝试在我的机器上安装 libmysql++-dev 包但失败并出现以下错误。我已经在机器上完成了 apt-get update 和 apt-get update。 22:28:03-root@deb
我想从应用程序中获取或到达 DLL = C:\mysql\bin\libmysql.dll 行。下面的列表是从 FireDAC 连接器信息中复制的。但是我可以在什么变量、对象或“类”中找到此信息并能够
我是一名优秀的程序员,十分优秀!