我在我的项目中使用这些库
使用
编译我的项目g++ -std=c++1y -I ../../date main.cpp -lpthread -lsqlpp-mysql -lmysqlclient -lboost_system -ljson11
直到昨天,每天一直都很好。但现在我得到了 这个错误,
┌─[shravan40@Debian] - [~/Work/algorithm] - [Fri Nov 18, 18:33]
└─[$] <git:(riskProfiling*)> g++ -std=c++1y -I ../../date main.cpp -lpthread -lsqlpp-mysql -lmysqlclient -lboost_system -ljson11
/usr/bin/ld: //usr/local/lib/libsqlpp-mysql.a(connection.cpp.o): relocation R_X86_64_32 against symbol `__pthread_key_create@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: //usr/local/lib/libsqlpp-mysql.a(prepared_statement.cpp.o): relocation R_X86_64_32 against symbol `__pthread_key_create@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: //usr/local/lib/libsqlpp-mysql.a(char_result.cpp.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: //usr/local/lib/libsqlpp-mysql.a(bind_result.cpp.o): relocation R_X86_64_32 against symbol `__pthread_key_create@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: //usr/local/lib/libsqlpp-mysql.a(connection_handle.cpp.o): relocation R_X86_64_32 against symbol `__pthread_key_create@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Nonrepresentable section on output
collect2: error: ld returned 1 exit status
┌─[shravan40@Debian] - [~/Work/algorithm] - [Fri Nov 18, 18:53]
└─[$] <git:(riskProfiling*)>
答案 0 :(得分:3)
最后,我已经找到了解决方案。
这是g++
版本的问题。最新版本g++-5
和g++-6
存在此类问题,但当我回到旧的g++
版本4.9.2
时,一切运行顺利。
答案 1 :(得分:0)
从16.04 LTS升级到18.04 LTS后,我遇到了类似的问题;但是对我来说,可以通过运行“ make clean”并重建项目来轻松解决。这可能并不对每个人都有效,但它是如此简单,以至于对于有此问题的任何人来说,都应首先尝试一下。
答案 2 :(得分:0)
使用gtest / gmock库从16.04 LTS升级到18.04 LTS后,我遇到了同样的问题。解决方案是您需要使用当前的编译器重新编译在项目中使用的库。