我正在尝试在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,但似乎不是问题。发现很难谷歌解决方案......
答案 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)
开头的命令。
我希望我没有忘记我采取的任何步骤,让我知道它是否仍然在某处打破。