在Mac OS X上回滚兼容版本的库

问题描述:

所以,我喜欢我的Macbook,而且她爱我。我们有我们的起伏,但大多数情况下我们的关系一直很强。最近虽然我们吵了一架。它开始就够了。我问她做更多,试图做更多的实验。我们带来了像sse这样的东西,快速的数学,并展开到卧室里,并编译我们图书馆的新版本。在Mac OS X上回滚兼容版本的库

它开始很好。我们将使用新库编译一些代码,测试新的水域。随着时间的推移,我们作为一对夫妇的表现猛增她工作得更快,我认为一切都很好。然后事情变得更糟。我们带来了另一名球员。她的名字是Matlab。

我们开始编译为MATLAB,

mex CC="gcc" CFLAGS="\$CFLAGS -msse -msse2 -msse3 -ffast-math -ftree-vectorize" LDFLAGS="\$LDFLAGS -msse2 -msse3 -ffast-math -ftree-vectorize" -I/usr/local/include -L/usr/local/lib -lsundials_cvode -lsundials_nvecserial -v -o kry_new.mexmaci64 mex_main.c 

编译和链接伟大的工作。但后来麻烦开始了:

kry_new(param,init,0:60:240,abstol,rtol,1) 
??? Invalid MEX-file 
'/Users/Andrew/Documents/MATLAB/het_optim/kry_new.mexmaci64': 
dlopen(/Users/Andrew/Documents/MATLAB/het_optim/kry_new.mexmaci64, 1): 
Library not loaded: /usr/local/lib/libsundials_cvode.1.dylib 
    Referenced from: /Users/Andrew/Documents/MATLAB/het_optim/kry_new.mexmaci64 
    Reason: Incompatible library version: kry_new.mexmaci64 requires version 
    2.0.0 or later, but libsundials_cvode.1.dylib provides version 1.0.0. 

Matlab觉得我们的实验已经走到了尽头。他们是完全不同版本的库。我不知道她从哪里得到这个想法。我做了一些调查:

$ otool -L kry_new.mexmaci64 
kry_new.mexmaci64: 
    /usr/local/lib/libsundials_cvode.1.dylib (compatibility version 2.0.0, current version 2.0.0) 
    @loader_path/libsundials_nvecserial.0.0.2.dylib (compatibility version 0.0.0, current version 0.0.2) 
    @loader_path/libmx.dylib (compatibility version 0.0.0, current version 0.0.0) 
    @loader_path/libmex.dylib (compatibility version 0.0.0, current version 0.0.0) 
    @loader_path/libmat.dylib (compatibility version 0.0.0, current version 0.0.0) 
    /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0) 
    /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0) 
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.4) 

问题出在libsundials_cvode。没有第二版,从来没有。更糟糕的是,我的Macbook采取了Matlab的一面。我尝试卸载,删除所有对新事物的引用,甚至删除了我们的make文件并尝试重新开始。我试图以旧的方式重建我们的图书馆。但他们不会放弃难以捉摸的版本2.我不知道如何给他们想要的东西。我只是没有足够的人来满足他们对我的期望。

我唯一能猜到的是在某些时候,版本2是有意义的,但我以某种方式背离了它。即使我回到原来的样子,我想我所提出的链接仍然留在他们的脑海里。我想我忘记了我的系统管理员给出的那些鸟类和蜜蜂的第一条规则,“每次你象征着一个充满活力的图书馆,你都会将自己的一部分给你,你永远不会回来。”

在绝望中保留两个我的MacBook和Matlab在我的生活,我告诉我不是骄傲的谎言:

sudo mv libsundials_cvode.1.0.0.dylib libsundials_cvode.2.0.0.dylib 

我不认为这是可行的,但它没有。他们现在编译我的代码,看起来很开心。但我有这种感觉,我只是在伪装它,而且我的谎言会回来咬我。

因此,由于丹·萨维奇只是无视我,我转向你的关系建议*。我需要以某种方式告诉我的Macbook,不,版本1.0.0对我们来说已经足够了。我怎样才能让她倾听我的意见,解决我的关系中的兼容性问题,却没有我可怕的谎言?

+1

我希望我知道...但是,所有*问题都应该重写为关系建议列。我在投票:我希望别人能帮忙。 – stderr 2011-04-26 20:43:51

对不起,如果我吠叫了错误的树,但从​​我可以告诉Sundials是在版本2.4(个别库在2.6)? https://computation.llnl.gov/casc/sundials/download/download.html。你有没有尝试从源代码编译?

我刚编译并安装在运行10.6.7的Mac Pro上,没有任何问题!您需要使用以下配置来安装.dylib,否则它只会生成.la和。一个

./configure --enable-shared 

我现在有以下几点:

w125-244:sundials-2.4.0 stevemoss$ ls -al /usr/local/lib/libsundials_cvode* 
-rwxr-xr-x 1 root staff 4136 28 Apr 16:07 /usr/local/lib/libsundials_cvode.1.0.0.dylib 
lrwxr-xr-x 1 root staff  29 28 Apr 16:07 /usr/local/lib/libsundials_cvode.1.dylib -> libsundials_cvode.1.0.0.dylib 
-rw-r--r-- 1 root staff 512704 28 Apr 16:07 /usr/local/lib/libsundials_cvode.a 
lrwxr-xr-x 1 root staff  29 28 Apr 16:07 /usr/local/lib/libsundials_cvode.dylib -> libsundials_cvode.1.0.0.dylib 
-rwxr-xr-x 1 root staff  878 28 Apr 16:07 /usr/local/lib/libsundials_cvode.la 
-rwxr-xr-x 1 root staff 4136 28 Apr 16:07 /usr/local/lib/libsundials_cvodes.2.0.0.dylib 
lrwxr-xr-x 1 root staff  30 28 Apr 16:07 /usr/local/lib/libsundials_cvodes.2.dylib -> libsundials_cvodes.2.0.0.dylib 
-rw-r--r-- 1 root staff 926048 28 Apr 16:07 /usr/local/lib/libsundials_cvodes.a 
lrwxr-xr-x 1 root staff  30 28 Apr 16:07 /usr/local/lib/libsundials_cvodes.dylib -> libsundials_cvodes.2.0.0.dylib 
-rwxr-xr-x 1 root staff  885 28 Apr 16:07 /usr/local/lib/libsundials_cvodes.la 

w125-244:sundials-2.4.0 stevemoss$ otool -L /usr/local/lib/libsundials_cvode.dylib 
/usr/local/lib/libsundials_cvode.dylib: 
    /usr/local/lib/libsundials_cvode.1.dylib (compatibility version 2.0.0, current version 2.0.0) 
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.10) 

而且,也许一个符号可能是比你的榜样的MV更好?