[odb-users] Building odb-tests-2.2.0 on Mac with gcc-4.8.0: make errors

skh skh1002 at gmail.com
Thu May 9 22:10:08 EDT 2013


Dear list,

I have been recently trying to install ODB on a Mac computer running OS X
10.8 and I managed to do that with the exception of libodb-qt package (I
will report it in a separate post). I am using gcc-4.8.0 and so far only
libodb-sqlite runtime. I have gcc installed in /usr/gcc-4.8.0
(--program-suffix=-4.8) and all ODB-related components in /usr/odb. I was
also able to build and run all of the examples in odb-examples-2.2.0.

Today, I tried compiling odb-tests with the following invocation in the
source folder:
$ export PATH=/usr/gcc-4.8.0/bin:$PATH
$ ./configure ODB=/usr/odb/bin/odb CC=gcc-4.8 CXX=g++-4.8 CPP=cpp-4.8
CPPFLAGS=-I/usr/odb/include
LDFLAGS=-L/usr/odb/lib --with-database=sqlite
$ make

Unfortunately make fails with different errors depending on the CXXFLAGS
passed to configure. If I specify CXXFLAGS=-std=c++0x, then make bombs out
with this message: 
Making all in access
Š
Undefined symbols for architecture x86_64:
"odb::vector_base::vector_base(odb::vector_base&&)²,
referenced from: odb::vector<item, std::allocator<item>
>::vector(odb::vector<item, std::allocator<item> >&&)
in driver.o Š

followed by a few other referencing entities in the same driver.o file. When
I don¹t specify CXXFLAGS, the error message is different:
Making all in access
make  all-am
Š
test-odb.cxx:2463:13: error: Œmove¹ is not a member of Œstd¹ o.p2 (std::move
(v));

I also tried using a separate build folder alongside the source one:

$ export PATH=/usr/gcc-4.8.0/bin:$PATH
$ cd ../odb-tests-build
$ ../odb-tests-2.2.0/configure ODB=/usr/odb/bin/odb CC=gcc-4.8 CXX=g++-4.8
CPP=cpp-4.8 
CPPFLAGS=-I/usr/odb/include LDFLAGS=-L/usr/odb/lib  --with-database=sqlite
$ make

In this case, CXXFLAGS=-std=c++0x option produces the same error message as
before, but if I omit it, the following is generated:

make all-am
Š
In file included from
../../../odb-tests-2.2.0/common/definition/driver.cxx:19:0:
./test-odb.hxx:109:7:
error: Œimage_type¹ in Œclass odb::access::composite_value_traits<timeval,
(odb::database_id)1u>¹
does not name a type
composite_value_traits< ::timeval, id_sqlite >::image_type time_value;
^

In case of c++11, it looks as if a library might be missing, which exports
change-tracking container symbols, but so far I did not see any indication
in the docs that this is a separate library. I would appreciate it if you
could provide any hints on how to resolve this issue.

Thank you in advance,
S.





More information about the odb-users mailing list