悲催的科学匠人 - 冷水'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
不过不想换编译器了