原文:http://blog.josephmisiti.com/compiling-libffm-on-osx-10.9/
I recently tried to compile LIBFFM (Field-aware Factorization Machines) on my local machine running 10.9 and things did not work out as expected:
fmm.cpp:11:10: fatal error: 'omp.h' file not found
#include <omp.h>
^
1 error generated.
So it turns out the version of GCC that ships with OSX does not support this header
I ended up getting it compiled, and here is how I did it:
First, download a new version of GCC:
wget http://prdownloads.sourceforge.net/hpc/gcc-4.9-bin.tar.gz
Next, upzip and untar it, and put it in /usr/local/bin
gunzip gcc-4.9-bin.tar.gz
sudo tar -xvf gcc-4.9-bin.tar -C /
Now, you need to update the Makefile
that comes with LIBFFM to look like this
CXX = g++
CXXFLAGS = -Wall -O3 -std=c++0x # uncomment the following flags if you do not want to use OpenMP DFLAG += -DUSEOMP CXXFLAGS += -fopenmp all: ffm-train ffm-predict ffm-train: ffm-train.cpp ffm.o $(CXX) $(CXXFLAGS) -o $@ $^ ffm-predict: ffm-predict.cpp ffm.o $(CXX) $(CXXFLAGS) -o $@ $^ ffm.o: ffm.cpp ffm.h $(CXX) $(CXXFLAGS) $(DFLAG) -c -o $@ $< clean: rm -f ffm-train ffm-predict ffm.o timer.o
Finally, run make
and you are good to go
(vor)JOSEPH-MISITI:libffm-1.0 josephmisiti$ make
g++ -Wall -O3 -std=c++0x -fopenmp -DUSEOMP -c -o ffm.o ffm.cpp
g++ -Wall -O3 -std=c++0x -fopenmp -o ffm-train ffm-train.cpp ffm.o g++ -Wall -O3 -std=c++0x -fopenmp -o ffm-predict ffm-predict.cpp ffm.o