用PITA算法做靶标预测的时候,要用到ViennaRNA包做结构的折叠,这个包是被修改过的,原来的包在我机子上是可以装的。但是这个修改过的包编译不通过。很奇怪的错误,不知道怎么改。

好在它有两个版本,64位和32位的。我弄到大型机上去编译32位的,也是出错,不过是命名空间的问题,我改两个头文件就可以通过了。最近又要算。那个大型机最近被搬走了。只能本机上做。

所以折腾了一下,在64位的系统里编译32位的程序。

CPU: AMD Athlon(tm) 64 X2 Dual Core Processor 3800+ OS: Ubuntu 7.10/Linux 2.6.20-15-server #2 SMP Sun Apr 15 06:22:36 UTC 2007 x86_64 GNU/Linux GCC: gcc (GCC) 4.1.2 (Ubuntu 4.1.2-0ubuntu4)

首先需要安装32位的兼容库

apt-get install ia32-libs libc6-dev-i386 linux32

1.用linux32命令在configure时改一下CHOST,设置一下编译环境

$ linux32 ./configure

#系统类型将变为:i686-pc-linux-gnu #而不是x86_64-unknown-linux-gnu

2.设定GCC的参数

export CFLAGS="-m32 -04 -march=i386 -mtune=i386"

#最关键是-m32

-m32, -m64 Generate code for a 32-bit or 64-bit environment. The 32-bit environment sets int, long and pointer to 32 bits and generates code that runs on any i386 system. The 64-bit environment sets int to 32 bits and long and pointer to 64 bits and generates code for AMD’s x86-64 architecture.

3.编译

make

4.安装

sudo make install

最终是成功地安装了。破PC机又得跑好多天了。

参考How to build 32-bit Wine on a 64-bit (x86-64) system