制造错误:在OS X上安装hqp(巨大的二次编程)

时间:2013-03-27 01:27:08

标签: macos gcc makefile quadratic

我正在尝试在OS X上安装hqp,但似乎gcc编译器完全不同。 运行make时,我首先遇到类似malloc.h not found的错误,我将#include标题包裹起来:

#if !defined(__APPLE__)
#include <malloc.h>
#endif

通过这种方式,第一个问题得以解决。 但是当我继续运行make时,我得到的结论是:

g++ -shared -o libhqp.so Hqp_Init.o Hqp.o sprcm.o Meschach.o spBKP.o matBKP.o bdBKP.o Hqp_impl.o Hqp_Program.o Hqp_Solver.o Hqp_Client.o Hqp_IpsFranke.o Hqp_IpsMehrotra.o Hqp_IpMatrix.o Hqp_IpSpBKP.o Hqp_IpRedSpBKP.o Hqp_IpLQDOCP.o t_mesch.o Hqp_IpSpSC.o meschext_hl.o Hqp_SqpSolver.o Hqp_SqpPowell.o Hqp_SqpSchittkowski.o Hqp_HL.o Hqp_HL_Gerschgorin.o Hqp_HL_DScale.o Hqp_HL_BFGS.o Hqp_HL_SparseBFGS.o Hqp_SqpProgram.o Hqp_Docp.o hqp_solve.o \
          ../meschach/*.o ../iftcl/*.o -L"/sw/lib" -Wl,-rpath,"/sw/lib" -ltclstub8.5
i686-apple-darwin11-llvm-g++-4.2: ../meschach/*.o: No such file or directory
i686-apple-darwin11-llvm-g++-4.2: ../iftcl/*.o: No such file or directory

这次有谁知道哪个组件不同?我尝试重新安装最新版本的tcl,但似乎不是问题。发现很难谷歌解决方案......

1 个答案:

答案 0 :(得分:0)

如果没有实际测试结果,我可以使用以下步骤进行操作。我不得不说这组makefile不能正常工作,特别是关于如何设置依赖关系。

首先,修改meschach/machine.h并移除#include <malloc.h>,或者像使用__APPLE__ ifdef一样使其有条件。包含malloc.h的唯一原因似乎是malloc()free(),而且无论如何都会通过stdlib.h包含这些原因。

然后修改makedirs.in并将-I/usr/include/malloc追加到MES_INCDIR,然后留下MES_INCDIR = -I.. -I/usr/include/malloc

有了这两个步骤,执行./configure后跟make应该已经在libhqp.so目录中提供了lib,这对您来说已经足够了。

但是,docp目录中还有一个名为hqp_docp的可执行文件,它在make进程中执行。它不起作用,因为它找不到共享库libhqp.so。我通过cd - 进入lib目录并设置export DYLD_FALLBACK_LIBRARY_PATH=$PWD解决了这个问题。我不确定运行docp是否是该过程的重要部分。

最后,构建名为omu的库会中断,因为链接器未传递对所需库libhqp.so的任何引用。我没弄清楚为什么这会在其他系统上运行,我不知道你是否需要libomu。我只是通过在-L../lib -lhqp中将omu/Makefile添加到linker-command的末尾来进行快速修复。这是以$(LD)开头的命令。

我希望我没有忘记我采取的任何步骤,让我知道它是否仍然在某处打破。