本帖最后由 zhanfei 于 2015-11-25 11:55 编辑
关于Octave的C++调用。官方的推荐是使用自带的mkoctfile --link-stand-alone ,mkoctfile是作为编译和链接的wrapper。yum安装的记得安装develop部分,只安装octave主体,没有mkoctfile
如果不是主要调用Octave,还是想用简单的编译命令的话,注意mkoctfile命令提供了-p VAR 即打印VAR变量的方法。根据VAR
的名字很容易看出来选项的意义。
主要的几个
ALL_CXXFLAGS ALL_LDFLAGS
LFLAGS 等等 LIBOCTAVE LIBOCTINTERP 是两个库-loctave -loctinterp
总之就是mkoctfile -p VAR 看选项根据情况取舍
使用时候,比如编译Octave手册中的简单例子embedded.cc
g++ -I/usr/include/octave-3.8.2/octave/.. -I/usr/include/octave-3.8.2/octave -L/usr/lib64/octave/3.8.2 -L/usr/lib64 -loctave -loctinterp embed.cc 或者 icpc -I/usr/include/octave-3.8.2/octave/.. -I/usr/include/octave-3.8.2/octave -L/usr/lib64/octave/3.8.2 -L/usr/lib64 -loctave -loctinterp embed.cc 就是我们常见的include文件和库文件的路径 和两个库octave octinterp。 这里要吐槽的是 1 Octave洋洋洒洒900多页写了很多函数用法云云,最重要的调用却一笔带过。窃以为有空写个wrapper还不如直接文档中把选项说清楚。 2 像很多库都喜欢弄个编译器 链接器的wrapper。(试想如果你希望用到多个库,然而这多个库链接时都是用wrapper。。。然后。。。) mpi这种就忍了,但是一般的库,还是希望能顺便给个输出所有编译,链接的选项,方便我们自己取舍,输出分两大项一项编译选项,一项链接选项就挺好,。Octave虽然有此功能但是设置变量太多了(好在变量名字的意思好猜)。
至于win下的调用我放弃用icl和cl了,还是用原生的mkoctfile吧,在stackflow上看了几个回复,自己到win上用VS试的时候就各种error,而且VS版的3.6之后也没后续了。
评论 原本以为Octave能提供一个统一操作的,包含各种数值计算的库,浏览了liboctave.pdf文档后发现自己想多了,相比Octave本身的强大功能,Octave提供的库还不如gsl广泛。 很多介绍数值计算库的帖子对Octave库的描述有些言过其实。总之就是大家该用gsl和mkl的继续用,除非Octave哪天提供更多的函数和更详细的文档。
|