想用Octave做嵌入计算,可以直接调用.m文件。想法很好,结果遇到了一系列的坑,有的跳出来了,有的还没填上。
首先,看到Octave需要Linux的编译环境,那就先在Linux下试试。正好有DeepIn系统,下了Octave 6.3的源代码,开始尝试。结果一编译,发现DeepIn的好多库与Octave需要的库版本不符,编译不通过。只好从configure的选项中,一个一个屏蔽牵连的模块,最终生成了一个没有图形功能的Octave。经测试,可以嵌入到代码中,执行正常。
其次,想试试Windows下是否能行。先下载了已编译好的Octave二进制代码,按照Linux下的代码再来一遍,也能运行。但是每次在octave::interpreter析构时会报告两个错误,很不爽。搜到很久以前的BUG报告,可能是析构时内部符号表被释放后又使用了,到现在还没修复吗?无论如何,要想躲开这个错误,还是要在Windows下编译Octave。
于是,决定按照Octave Wiki(Building on Microsoft Windows - Octave)的方法,在Windows下用MSYS2编译Octave。按照流程下载了所有需要的库,下载了最新的Octave源代码,然后编译,大概半小时后失败。看输出,是发生在链接生成动态库的最后一步出的错,但是没有任何具体提示,只是说失败了。
为了取得具体的错误信息,