如何从boost创建库?

时间:2010-11-25 13:31:00

标签: linux boost llvm

我正在为项目使用boost的一部分(只有message_queue)。如果我使用本机代码,hpp文件就可以了。但我需要LLVM bitcode文件中的消息队列(我正在我的程序中执行bitcode)并得到以下错误:

LLVM ERROR: Program used external function 'shm_unlink' which could not be resolved!

有人告诉我,构建一个具有所需部分boost的库是解决这个问题的最佳方法。

我做了什么(在boost目录中):

gcc -I . -c boost/interprocess/ipc/message_queue.hpp -o ipc.o
ar -cvq libipc.a ipc.o
ranlib libipc.a

然后在我的程序目录中:

llvm-g++ -Wall -O3 -static -L../../Release/lib -lipc -I../../include -I../../../boost_1_44_0 -fexceptions -emit-llvm tmp.cpp -o tmp.bc

现在,如果我在程序中包含boost-header,我会得到:

../../Release/lib/libipc.a: could not read symbols: Archive has no index; run ranlib to add one

如果我不包含它们,我会收到一些错误,这些错误都与未声明的message_queue有关。

我做错了什么?更重要的是,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

shm_unlink,iirc,在实时库librt中提供。将链接[gcc flag -lrt]添加到您的构建