相关疑难解决方法(0)

从LLVM bitcode编译对象时无法链接到静态库.

我正在开发一个LLVM编译器传递.我按以下方式运行传递:

  1. 编译为LLVM bitcode

    clang  foo.c -emit-llvm -c -o foo.bc
    
    Run Code Online (Sandbox Code Playgroud)
  2. 通过opt运行foo.bc(没有此步骤仍会发生错误)

  3. 编译回目标文件

    clang  -c -o foo.o foo.bc
    
    Run Code Online (Sandbox Code Playgroud)
  4. 现在foo.o可能是静态库的一部分.

    ar rc libfoo.a foo.o
    
    Run Code Online (Sandbox Code Playgroud)
  5. 当以这种方式编译所有我的c文件时,我无法链接到libfoo.a.

    clang libfoo.a linkme.o -o linkme
    
    linkme.o:linkme.bc:function main: error: undefined reference to 'foo'
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    
    Run Code Online (Sandbox Code Playgroud)

源文件:

foo.c的:

int foo(int a)
{
    return a;
}
Run Code Online (Sandbox Code Playgroud)

foo.h中

int foo(int a);
Run Code Online (Sandbox Code Playgroud)

linkme.c

#include "foo.h"

int main(int argc, char *argv[])
{
   foo(6);

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

c llvm clang

4
推荐指数
1
解决办法
5626
查看次数

如何使用LLVM> = 3.1将对象链接到库?(没有GNU ld)

如何使用Llvm/Clang(版本3.3(主干168461))提供的工具生成可运行的可执行文件?

我编译了一个对象,clang++ -c [...]我想尝试将此对象链接到一个特定的库,看看是否可以生成一个可用的可执行文件.

我注意到从3.1版本llvm-ld它已被删除,llvm-link看起来并没有继承所有选项llvm-ld,虽然它被标记为官方文档上的llvm-ld的替代品,所以我只是不知道我怎么样我应该链接这个对象.

我不想使用ldGNU/GCC套件,只使用llvm的工具.

总结一下,这是我从svn的llvm构建中获得的工具

bugpoint      clang-check   llvm-bcanalyzer  llvm-extract   llvm-objdump  llvm-stress      scan-build
c++-analyzer  clang-tblgen  llvm-config      llvm-link      llvm-prof     llvm-symbolizer  scan-view
ccc-analyzer  llc           llvm-cov         llvm-lit       llvm-ranlib   llvm-tblgen      scanview.css
clang         lli           llvm-diff        llvm-mc        llvm-readobj  macho-dump       ScanView.py
clang++       llvm-ar       llvm-dis         llvm-mcmarkup  llvm-rtdyld   opt              sorttable.js
clang-3.3     llvm-as       llvm-dwarfdump   llvm-nm        llvm-size     Reporter.py      startfile.py
Run Code Online (Sandbox Code Playgroud)

谢谢.

linker llvm clang

2
推荐指数
1
解决办法
2245
查看次数

标签 统计

clang ×2

llvm ×2

c ×1

linker ×1