悲催的科学匠人 - 冷水's blog

LINUX下MATLAB MEX编译的问题

虽然linux中gcc编译器的版本已经进化到4.7,但是matlab所依赖的gcc版本还停留在4.4.x。这样导致在较新gcc的平台上编译mex时会出现库版本不匹配的情况。

一个解决方法是安装旧版gcc,且将默认编译器设置为旧版,而后就正常了。

如下是在ubuntu 11.04上的解决

 

sudo apt-get install gcc-4.4  g++4.4 gfortran-4.4
sudo update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-4.4 100
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.4 100

  

测试了一个简单的动态重叠网格

采用python脚本不断更新运动状态参数文件

而网格组装程序采用FIFO机制与python脚本通讯

 

在Cygwin下编译python扩展库的问题

折腾的半天,原来是这样

1 gcc编译c代码时的-fPIC开关在cygwin下没用了,去掉即可。

2 连接python扩展库时,需要指定连接python库

 

gcc -shared a.o a_wrap.o -lpython2.6  -o _a.dll

注意是dll文件,不再是so了

3 此外-Bstatic和-Bdynamic似乎要去掉

 

gfortran的类型绑定方法还是没法用

至少在 gfortran 4.5上还不行

本来希望能够采用类似C++那样的成员函数调用方式

CALL obja%fun1(arg1, arg2, arg3)

 

结果不太行

 

只好改回老式的

CALL fun1(obja, arg1, arg2, arg3 )

 

可能在新版上可以,或者intel fortran

不过不想换编译器了

 




Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee