[odb-users] Linking problem at Ubuntu 16.04

Martin Schneider martin at mu-schneider.de
Wed Jun 1 15:50:28 EDT 2016


Hi Boris,

you are right with your asumption about C++98.
I now rerun:
 > make distclean
 > ./configure --with-database=mysql CXXFLAGS="-std=c++11 -Wno-deprecated"
 > make

But original error comes up again:

make[4]: Verzeichnis 
„/home/martin/projects/odb/odb-tests-2.4.0/common/access“ wird betreten
depbase=`echo driver.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
g++ -DHAVE_CONFIG_H   -I'../../libcommon' -I'../../libcommon' -I'.' 
-I'.'   -std=c++11 -Wno-deprecated -D_REENTRANT  -MT driver.o -MD -MP 
-MF $depbase.Tpo -c -o driver.o driver.cxx &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo test-odb.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
g++ -DHAVE_CONFIG_H   -I'../../libcommon' -I'../../libcommon' -I'.' 
-I'.'   -std=c++11 -Wno-deprecated -D_REENTRANT  -MT test-odb.o -MD -MP 
-MF $depbase.Tpo -c -o test-odb.o test-odb.cxx &&\
mv -f $depbase.Tpo $depbase.Po
/bin/bash ../../libtool --tag=CXX   --mode=link g++ -std=c++11 
-Wno-deprecated -D_REENTRANT    -o driver driver.o test-odb.o 
../../libcommon/common/libcommon.la -lodb-mysql -lodb-qt -lodb-boost 
-lboost_date_time -lboost_system -lodb  -lpthread
libtool: link: g++ -std=c++11 -Wno-deprecated -D_REENTRANT -o 
.libs/driver driver.o test-odb.o 
../../libcommon/common/.libs/libcommon.so -lodb-mysql -lodb-qt 
-lodb-boost -lboost_date_time -lboost_system -lodb -lpthread
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libodb-mysql.so: 
undefined reference to `odb::statement::process_insert(char const*, void 
const* const*, unsigned long, unsigned long, char, 
std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >&)'
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libodb-mysql.so: 
undefined reference to `odb::statement::process_update(char const*, void 
const* const*, unsigned long, unsigned long, char, 
std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >&)'
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libodb-mysql.so: 
undefined reference to `odb::statement::process_select(char const*, void 
const* const*, unsigned long, unsigned long, char, char, bool, 
std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >&, bool)'
collect2: error: ld returned 1 exit status
Makefile:343: die Regel für Ziel „driver“ scheiterte
make[4]: *** [driver] Fehler 1
make[4]: Verzeichnis 
„/home/martin/projects/odb/odb-tests-2.4.0/common/access“ wird verlassen


Thanks
Martin



Am 31.05.2016 um 00:57 schrieb Boris Kolpackov:
> Hi Martin,
>
> Martin Schneider <martin at mu-schneider.de> writes:
>
>> ./configure --with-database=mysql CXXFLAGS=-std=c++11
>> make
>>
>> but then a lot of deprecate warnings like:
>> ../../libcommon/common/common.hxx:42:15: warning: 'template<class> class std::auto_ptr' is deprecated [-Wdeprecated-declarations]
> You can add -Wno-deprecated to suppress these (we will get rid of them
> once we switch to C++11-only):
>
> ./configure --with-database=mysql CXXFLAGS="-std=c++11 -Wno-deprecated"
>
>
>> test-odb.cxx:2367:14: error: use of deleted function ‘std::unique_ptr<_Tp, _Dp>::unique_ptr(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = test3::object1; _Dp = std::default_delete<test3::object1>]’
>>         o.p2 (v);
> I am pretty sure you are trying to compile code generated in the C++98 mode.
> Did you do:
>
> make distclean
>
> Before running configure?
>
> Boris



More information about the odb-users mailing list