首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql:在Mac上构建一个完全独立的_mysql.so?

mysql:在Mac上构建一个完全独立的_mysql.so?
EN

Stack Overflow用户
提问于 2009-12-27 16:30:30
回答 2查看 1.8K关注 0票数 1

我在Linux (Ubuntu9.10)下运行VMware融合下的数据库服务器,但在Mac端编写Django代码。安装mysql-python需要在Mac上安装MySQL,以便将_mysql.so编译成site-packages

但是,在此之后,我不再使用Mac端的MySQL,而只是删除它。当然,当_mysql.so需要/usr/local/mysql/lib/libmysqlclient_r.16.dylib时,这是不可能的。

mysql的site.cfg中有一个“静态”选项,当设置为"true“时,它显著增加了_mysql.so文件的大小,但它仍然依赖于.dylib。

是否有一种方法可以使.so完全独立于是否安装了MySQL,即使这意味着使文件变得巨大?

如果存在这种解决方案,则应该同时在10.5和10.6上工作,因为目前我将在不同的机器上使用这两个版本。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-27 17:48:03

算了,再挖一遍就会发现自己了。实际上,这很简单;我会在这里记录解决方案,以防其他人需要它:

  1. 从mysql.com获得MySQL的源tarball (不是特定于平台的二进制
  2. it ),使用适合您的任何选项运行./configure,但是您需要--enable-static。可以肯定的是,我包括了--disable-shared,尽管它可能不是绝对必要的。我使用了以下方法,您的可能在其他方面有所不同:

$ ./configure --prefix=/usr/local/mysql-src/ --enable-static --disable-shared --with-charset=utf8 --with-extra-charsets=ascii,binary,latin1 --with-collation=utf8_general_ci

$ make

$ sudo make install

(关于这里的字符集和排序规则参数:在这个用例中,它们可能完全没有必要,因为我以后将删除MySQL,但是由于所有客户端连接都使用了一些字符集/排序规则,所以我将覆盖我的基础UTF-8 -wise,以防MySQLdb使用的默认字符集/排序规则受到_mysql.so编译方式的影响-这比我希望以某种方式确认的方法更明智。)

http://pypi.python.org/pypi/MySQL-python

  • Unpack it和site.cfg set static = Truemysql_config = /usr/local/mysql-src/bin/mysql_config (或您在configure).

  • Run python setup.py build期间选择的任何路径)中,
  1. 获得了mysql-python的最新源tarball。编译结束时可能会出现一些与架构相关的错误,但可以忽略它们。
  2. 运行sudo python setup.by install。这将在您的.egg目录中创建一个site-packages,并将其添加到easy_install.pth文件中。
  3. 完成了!现在,您可以删除MySQL的所有跟踪以及mysql源代码。鸡蛋可以复制到其他运行相同版本OS X的Mac上。我很高兴地将它复制到我们所说的用virtualenv创建的各种虚拟环境中。

这在10.5上有效,我很快就会在10.6上测试它,如果需要做一些不同的事情,在这里报告结果。

票数 3
EN

Stack Overflow用户

发布于 2014-06-02 13:27:10

我来到这里,试图在一个旧的linux上构建一个静态MySQLdb。我发现MySQL已经转换为cmake:

我能够构建这样的静态mysql:

代码语言:javascript
复制
# set INSTALL to taste, run from where you extracted the tar file
SOURCE=$(pwd) && mkdir bld && cd bld &&
cmake -DCMAKE_INSTALL_PREFIX=$INSTALL -DWITH_PIC=ON -DDISABLE_SHARED=ON \
      -DDEFAULT_CHARSET=utf8 -DEXTRA_CHARSETS=ascii,binary,latin1 \
      -DDEFAULT_COLLATION=utf8_general_ci \
      $SOURCE

请注意"WITH_PIC=ON“和"DISABLE_SHARED=ON”,这似乎与直觉相反,但是要构建动态可加载的MySQLdb python模块,需要使用-fPIC构建所有的MySQLdb静态库。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1966322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档