C++ 将smplayer构建到LLVM IR并由lli运行

C++ 将smplayer构建到LLVM IR并由lli运行,c++,linux,clang,llvm,C++,Linux,Clang,Llvm,在ubuntu-14.10_amd64中,我使用clang/llvm-3.4编译了smplayer-14.9.0.6690。 我在src中更改了Makefile,如: CC=clang CXX=clang CFLAGS = -emit-llvm ... CXXFLAGS = -emit-llvm ... LINK = llvm-link TARGET = smplayer.bc 最后我得到了smplayer.bc。然后我用 $ llvm-dis smplayer.bc -o smplaye

在ubuntu-14.10_amd64中,我使用clang/llvm-3.4编译了smplayer-14.9.0.6690。 我在src中更改了Makefile,如:

CC=clang 
CXX=clang
CFLAGS = -emit-llvm ...
CXXFLAGS = -emit-llvm ...
LINK = llvm-link
TARGET = smplayer.bc

最后我得到了
smplayer.bc
。然后我用

$ llvm-dis smplayer.bc -o smplayer.ll 
$ lli -load=... -load=......  smplayer.ll 
但它有一个错误:

LLVM ERROR: Program used external function '__dso_handle' which could not be resolved!
然后我使用clang将bc构建为本机可执行文件,如下所示:

$ clang smplayer.bc -v -o smplayer.na -m64 -L/usr/lib/x86_64-linux-gnu -lz -lQtDBus -lQtScript -lQtXml -lQtGui -lQtNetwork -lQtCore -lpthread
错误是:

/usr/bin/ld: /tmp/smplayer-7c5fc5.o: undefined reference to symbol '__cxa_pure_virtual@@CXXABI_1.3'
/usr/lib/x86_64-linux-gnu/libstdc++.so.6: error adding symbols: DSO missing from command line

尝试将“-fno use cxa atexit”与clang一起使用。这样就不用再使用“\uu dso\u handle”


它很有用。

尝试将“-fno use cxa atexit”与clang一起使用。这样就不用再使用“\uu dso\u handle”

这是有用的