无法链接Boost Thread库

时间:2013-01-01 18:15:57

标签: c++ linux boost linker

我正在尝试使用.so编写的Linux(C++)编译动态库。

由于Microsoft Visual Studio 2008存在一些兼容性问题,因此在库代码中我处理Boost库的多线程。

当我编译我的库时,我使用-lboost_thread标志。

编译以没有错误结束,但似乎Boost库没有链接:

ldd myLib.so.1.0 
    linux-vdso.so.1 =>  (0x00007fffe81ff000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f2e9ad43000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f2e9aa47000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f2e9a830000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2e9a471000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f2e9b348000)

此外,当我尝试在应用程序中加载我的库时,我收到此错误:

undefined symbol: _ZTIN5boost6detail16thread_data_baseE

有人能给我一些提示吗?

请询问您是否需要更多详细信息。

谢谢。

编辑:这是我构建我的库的方式

CC=g++ -c
CFLAGS=-I./acml530_amd64/ifort64_mp/include/ -I/usr/lib/jvm/java-7-oracle/include -I/usr/lib/jvm/java-7-oracle/include/linux
LFLAGS=-L./acml530_amd64/ifort64_mp/lib -lacml_mp -lboost_thread 
OUTPUT_DIR=./build/

./svdlibc/las2.o: ./svdlibc/las2.cpp
    $(CC) -c -w -fPIC -o $(OUTPUT_DIR)las2.o $< $(CFLAGS) $(LFLAGS)

./svdlibc/svdlib.o: ./svdlibc/svdlib.cpp
    $(CC) -c -w -fPIC -o $(OUTPUT_DIR)svdlib.o $< $(CFLAGS) $(LFLAGS)

./svdlibc/svdutil.o: ./svdlibc/svdutil.cpp
    $(CC) -c -w -fPIC -o $(OUTPUT_DIR)svdutil.o $< $(CFLAGS) $(LFLAGS)  

%.o: %.cpp
    $(CC) -c  -fPIC -o $(OUTPUT_DIR)$@ $< $(CFLAGS) $(LFLAGS)

compile_lib: Native.o Repository.o ArrayUtilTest.o FeatureToGene.o javaAnnotationItemWrapper.o javaAnnotationRetrieverWrapper.o javaDecompositionResponseWrapper.o javaPredictionResponseWrapper.o JavaRelationshipItemWrapper.o javaRelationshipRetrieverWrapper.o JavaRequestWrapper.o javaSimilarityRetrieverWrapper.o javaValidationResponseWrapper.o ./svdlibc/las2.o ./svdlibc/svdlib.o ./svdlibc/svdutil.o StopWatchUtil.o
    g++ -shared -lboost_thread  -lgomp -Wl,-soname,biocpp.so.1 -o biocpp.so.1.0 $(OUTPUT_DIR)*.o    

0 个答案:

没有答案