使用gcc 3.4 vs 4.4编译现代Matlab MEX文件有什么权衡/担忧?
我需要编译一些现成的C ++代码(kdtree)作为MEX文件,以便在Fedora v16下与MATLAB(R2012a)一起使用。我使用最新的GCC编译器(4.6.x)遇到了符号问题,这是集群默认的。并且系统管理员非常不耐用gcc 4.4.x,Matlab的officially supported编译器可用。 (不知道为什么)所以,他建议使用遗产(大约2006年)gcc 3.4.6编译器。所以我的问题是如果使用旧的gcc编译器有任何权衡或问题?性能? 64位支持?线程安全(或真正的多个并行调用)?等等?
答案 0 :(得分:2)
您大多错过了c ++ 11功能的初步实现(包括标准化线程,可变参数模板等http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport)。只要两个编译器都生成与MATLAB兼容的ABI兼容的二进制文件,就没有任何版本特定的安全问题。没有c编译器可以为您解决共享状态问题。性能略有不同,但不显着。在任何一个编译器版本中,我都确信无论如何都要对代码进行更优化的实现。 gcc 3.4具有64位支持。