【问题标题】:Build smplayer to LLVM IR and run by lli将 smplayer 构建到 LLVM IR 并由 lli 运​​行
【发布时间】:2015-05-08 08:16:58
【问题描述】:

在 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

【问题讨论】:

    标签: c++ linux clang llvm


    【解决方案1】:

    尝试在 clang 中使用“-fno-use-cxa-atexit”。那应该摆脱使用'__dso_handle'。

    http://lists.cs.uiuc.edu/pipermail/llvmdev/2013-January/058748.html

    很有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-21
      • 1970-01-01
      • 2014-10-30
      • 1970-01-01
      相关资源
      最近更新 更多