drswinghead

主站网址

导航

gentoo 系统中 mysql 5.1 与 amarok相互block问题的解决办法

mysql-5.1.45 amarok-2.3.0.99 问题,开启amarok[embedded] USE后,链接默认MYSQL编译出来的libmysqld.a的时候出错: Linking CXX shared module ../../../../../lib/amarok_collection-mysqlecollection.so /usr/lib/gcc/x86_64-pc-linux-gnu/4.4.3/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib64/mysql/libmysqld.a(client.o): relocation R_X86_64_32 against `mysql_server_last_error' can not be used when making a shared object; recompile with -fPIC /usr/lib64/mysql/libmysqld.a: could not read symbols: Bad value collect2: ld 返回 1 make[2]: *** [lib/amarok_collection-mysqlecollection.so] 错误 1 make[1]: *** [src/core-impl/collections/sqlcollection/mysqlecollection/CMakeFiles/amarok_collection-mysqlecollection.dir/all] 错误 2 make: *** [all] 错误 2 而如果去年embeded USE的话,amarok需要连接到已经启动的mysql服务器,额外为了这个软件再启动一个mysql实在不协调,所以不能去掉这个USE。 需要修改的地方有3个, 1. 在/etc/make.conf的CFLAGS中临时加入 -fPIC,重新编译mysql-5.1.45。编译完成后去掉,防止影响系统上其他的包。 2. 修改mysql-5.1.45的ebuild, 注释一行, # RDEPEND="!media-sound/amarok[embedded]" 我是把这个文件拷贝到自己创建的portage树中做的,否则emerge --sync后又回来了。 3. 同2, 修改amarok-2.3.0.99.ebuild,注释一行, # embedded? ( <dev-db/mysql-5.1[embedded,-minimal] ) 对这几个文件重新ebuild xxx digest一下。 这样,amarok与 mysql-5.1.x就能存了,amarok也能使用mysql-5.1.x的libmysqld.a了。 当然也不是完善的方法,可能破坏系统的完整性,系统维护更复杂了,如果暂时不需要,还是mask掉mysql-5.1,更直接了当些,等gentoo开发者们处理好这个问题再改回来。 这个问题自从amarok使用embedded mysql和mysql发布5.1.x以来一直存在,现在终于不完善解决了,先这么用着。

posted on 2010-06-18 21:28  drswinghead  阅读(147)  评论(0编辑  收藏  举报