# Building Ceph from sources on FreeBSD 10.0



## m4r1n (Feb 14, 2014)

Hi,

I'm rather new on FreeBSD, so I apologize in advance for not seeing the obvious!

I'm trying to build Ceph from the sources of the lastest release (so-called "Emperor") on FreeBSD 10.0-RELEASE. I'm using the default (Clang) compiler.
The problem is I'm unable to complete the `./configure` stage because of a failed dependency check: the configure script looks for libcryptopp and seems unable to find it. Of course, I've already tried to install libcryptopp both from the ports (security/cryptopp) and the pkg repository, without success. In the debug log, I have the following error:


```
configure:17844 c++ -o conftest -g -O2 -D_THREAD_SAFE -pthread    conftest.cpp -lcryptopp      -lpthread > &5
/usr/bin/ld cannot find lcryptopp
```
Include files for libcryptopp are available in /usr/local/includes/cryptopp.
(if related) /usr/lib/libcrypt.so and /usr/local/lib/libcrypto.so do exist.

I don't know what path the linker is looking at for lcryptopp. Do you have any idea?

Thank you,

Marin.


----------



## dpejesh (Feb 14, 2014)

I tried doing this a few years ago and it was messy.  They use to have a branch in their repository trying to cleanup the code so it would be portable to other operating systems.  One of the problems they had was error numbers, they'd tend to pass them around the network straight from the operating system which pretty much bound everything to Linux.  Like I said though, that was a few years ago and I haven't looked at it since, so that's something to keep in mind.

As far as your issue, by default the compiler only looks in the base system for includes and libraries when building.  You'll have to set CFLAGS=-I/usr/local/include and LDFLAGS=-L/usr/local/lib before running configure to have it find libraries that you've installed.  You'll probably run into other problems too since not all packages drop their files into those directories, sometimes they put them in subdirectories off of those which you need to add too.

If you have any success with it I'd like to hear.  I've been following them since like 2008/2009 when I first saw the project and I see it as having huge potential in distributed storage.  I've created a couple test clusters on Linux over the years to see the progress they've been making but haven't been able to try it out again in a while.


----------



## m4r1n (Feb 15, 2014)

Hi,

First: I passed the configure step. I stored the path to local include files (/usr/local/include) in the CPATH environment variable, and only passed the LFDLAGS parameter to the configure script. I can't use the CFLAGS parameter because it makes the script fail.

I had to install several ports to pass the configure stage. Some of them are here:
devel/automake
security/cryptopp
devel/boost-all
lang/python27
misc/e2fsprogs-libbuid
devel/pkgconf
devel/yasm
databases/leveldb
archivers/snappy
 + any dependency.

Finally, I ran:
`# setenv CPATH /usr/local/include`
`# ./autogen.sh`
`# ./configure --with-gnu-ld LDFLAGS='-L/usr/local/lib' --without-fuse --without-tcmalloc --without-libaio`
And everything seemed OK.

Now if I try to make Ceph, i've got a strange error:

```
# make
Making all in .
Making all in src
make[1]: don't know how to make %:. Stop

make[1]: stopped in /tmp/ceph-0.76/src
*** Error code 1

Stop.
make: stopped in /tmp/ceph-0.76
```
I suppose there is something wrong with Makefile in the src directory. I don't know where the %: artifact comes from; it looks like some empty variable. The developers chose to use devel/automake to build Makefile: as a consequence the file is really huge and I don't know where to start.

As stated here, InkTank successfully built Ceph on FreeBSD 9.1, though they probably used lang/gcc instead of clang(). I'm currently using MooseFS (which is split across three ports: sysutils/moosefs-master, sysutils/moosefs-chunkserver, sysutils/moosefs-client), since that's the only native (not Java-powered), modern, distributed file system available on FreeBSD. But I feel concerned about recent licensing changes and I am looking for alternatives.

Thanks for your help!


----------



## cj2015 (Jan 26, 2015)

Hi, I have this make error also. Do you solve it? Thanks for help!


----------



## cj2015 (Feb 11, 2015)

Use gmake to get it pass, but it still failed at some point.


----------

