0

我正在尝试在 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,但似乎不是问题。发现很难用谷歌搜索解决方案......

4

1 回答 1

0

在没有实际测试结果的情况下,我使用以下步骤使其工作。我不得不说,这组 makefile 不能正常工作,尤其是在如何设置依赖项方面。

首先,编辑meschach/machine.h并删除,或者像使用ifdef#include <malloc.h>一样使其有条件。__APPLE__包括在内的唯一原因malloc.h似乎是为了malloc()free()那些stdlib.h无论如何都被包括在内的原因。

然后编辑makedirs.in并附-I/usr/include/malloc加到MES_INCDIR,留下MES_INCDIR = -I.. -I/usr/include/malloc.

完成这两个步骤后,do./configure后面的操作make应该已经libhqp.solib目录中为您提供了,这对您来说可能就足够了。

但是,在该过程中执行docp的目录中还调用了一个可执行文件。它不起作用,因为它找不到共享库。我通过-ing 进入目录和设置解决了这个问题。不过,我不确定跑步是否是该过程的重要组成部分。hqp_docpmakelibhqp.socdlibexport DYLD_FALLBACK_LIBRARY_PATH=$PWDdocp

omu最后,由于链接器没有传递对所需库的任何引用,因此构建了一个称为中断的库libhqp.so。我不知道为什么这会在其他系统上工作,我不知道你是否需要它libomu。我只是通过-L../lib -lhqp在链接器命令的末尾添加omu/Makefile. 那就是以 . 开头的命令$(LD)

我希望我没有忘记我所采取的任何步骤,让我知道它是否仍然在某个地方对你不利。

于 2013-03-27T16:39:50.347 回答