C++ 使用boost线程构建项目的问题

C++ 使用boost线程构建项目的问题,c++,linux,ubuntu,boost-thread,C++,Linux,Ubuntu,Boost Thread,我正在尝试使用boost线程构建我的项目,但出现以下错误: /usr/bin/ld.bfd.real: ./boost/boost_1_58_0/stage/lib/libboost_thread-gcc48-mt-1_58.a(thread.o): relocation R_X86_64_32 against '.text' can not be used when making a shared object; recompile with -fPIC ./boost/boost_1_58

我正在尝试使用boost线程构建我的项目,但出现以下错误:

 /usr/bin/ld.bfd.real: ./boost/boost_1_58_0/stage/lib/libboost_thread-gcc48-mt-1_58.a(thread.o): relocation R_X86_64_32 against '.text' can not be used when making a shared object; recompile with -fPIC ./boost/boost_1_58_0/stage/lib/libboost_thread-gcc48-mt-1_58.a: could not read symbols: Bad value

 collect2: error: ld returned 1 exit status

 make[1]: * * * [objdir/rel64/xerel64.so] Error 1

 make[1]: Leaving directory `/home/xe'

 make: * * * [build64] Error 2
我已经用address model=64_32 architecture=combined和address model=64 architecture=combined构建了libboost_线程,但没有工作

以下是我如何构建它:

g++ -Wl,-Bsymbolic -L./lib -L./cryptopp -shared -L./mysql/lib
-L./boost/boost_1_58_0/stage/lib -shared -m64 -s -o objdir/rel64/xerel64.so
objdir/rel64/./Callbacks.o  objdir/rel64/./CAnnounceBox.o  objdir/rel64/./CClans.o
objdir/rel64/./CCommands.o  objdir/rel64/./CCore.o  objdir/rel64/./CFunctions.o
objdir/rel64/./CIRC.o  objdir/rel64/./CPlayer.o  objdir/rel64/./CSettings.o
objdir/rel64/./CVehicle.o  objdir/rel64/./Main.o -Wl,-Bstatic -lmysqlclient64
-lcrypto64  -lboost_thread-gcc48-mt-1_58 -Wl,-Bdynamic -ldl -lpthread -lrt

我猜你是想建立一个共享库。但是,编译器抱怨libboost_thread-gcc48-mt-1_58.a中的代码无法重新定位它为-lboost_thread-gcc48-mt-1_58找到的库。如果您有一个libboost_thread-gcc48-mt-1_58.so,请确保它已被使用,否则,不能100%确定,但您可能希望尝试将静态库排除在正在构建的共享库之外。链接完整程序时需要添加它。使用-fPIC重新编译-是否尝试将其添加到编译器标志?@jsantander,那么我应该使用:-l:libboost_thread-gcc48-mt-1_58.so?是否检查了*.so库是否存在?说实话,我个人从来没有使用过这种语法……它是:-rw-r-r-1 root root 273466 Apr 22 18:26 libboost_thread-gcc48-mt-1_58.a lrwxxrwx 1 root 39 Apr 22 18:26 libboost_thread-gcc48-mt-1_58.so->libboost_thread-gcc48-mt-1_58.so.1.58.0-rwxr-xr-x 1 root 175686 Apr 22 18:26 libboost_thread-gcc48-mt-1_.58.so.0