[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