以前只在Windows平台下编译过,还写了文章做记录放在CSDN上,不过已经被封,不管了。
Ipopt毕竟是开源软件,在Linux下编译还是比较方便的。进入contrib/MatlatInterface/src 看到Makefile后make就可以了。不过好像有个小bug,就是在脚本自动链接的时候提示找不到matlabexception.o 之类的库文件。出的进入src下的.lib 文件夹,执行
cp * ./../
把所有编译好的.o文件拷出来,然后在make就可以正常链接了。
把得到的mex文件路径加入到matlab中。此时在matlab中仍不能用,因为matlab自带的库太老了,要用系统的库替换。
我是64位的Ubuntu Kylin,把/usr/lib/x86_64-linux-gnu/下的libgcc_s.so.1 libstdc++.so.6 libgfortran.so.3 链接到matlab安装目录的/sys/os/glnxa64文件夹下。最好之前备份一下matlab的原文件。这样就能用了。
2014.06.06
似乎这里给出了原因。
2014.06.06
不知道为什么我编译的接口在matlab中调用的时候会出现segment fault。我从Ipopt官网上下载编译好的接口却没有问题。