我正在为项目使用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有关。
我做错了什么?更重要的是,我该如何解决这个问题?
答案 0 :(得分:0)
shm_unlink,iirc,在实时库librt中提供。将链接[gcc flag -lrt]添加到您的构建