使用clang的静态链接libstdc ++

弗拉顿

当我使用GCC时,可以使用以下命令在Ubuntu 15.04上构建程序:

-static-libgcc -static-libstdc++

编译后的二进制文件可以在“标准” Ubuntu 14.04上运行,而无需任何外部软件包,只需标准更新即可。

clang静态链接到库是否有可能建立

最常见的答案:

  • 使用测试ubuntu rep(ppa:ubuntu-toolchain-r/test
  • 更新服务器
  • 在目标服务器上重新编译
  • 不要使用GCC

不适合我

我是否可以使用clang来在Ubuntu 14.04.3 LTS上运行它?

海藻

在此问题上,clang与gcc兼容。基本上对于使用iostream来确保libstdc++要求的hello-world程序(实际的lib版本在发行版之间可能有所不同):

$ clang++ test.cpp
$ ldd ./a.out
        linux-vdso.so.1 (0x00007ffec65c0000)
        libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/5.3.0/libstdc++.so.6 (0x00007ff937bb6000)
        libm.so.6 => /lib64/libm.so.6 (0x00007ff9378b6000)
        libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/5.3.0/libgcc_s.so.1 (0x00007ff93769e000)
        libc.so.6 => /lib64/libc.so.6 (0x00007ff9372fe000)
        /lib64/ld-linux-x86-64.so.2 (0x00007ff937f3e000)

下面是一个依赖libstdc++libgcc_s但是,如果您添加-static-libgcc -static-libstdc++

$ clang++ test.cpp -static-libgcc -static-libstdc++
$ ldd ./a.out
        linux-vdso.so.1 (0x00007ffe5d678000)
        libm.so.6 => /lib64/libm.so.6 (0x00007fb8e4516000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fb8e4176000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fb8e4816000)

仍然依赖libc,但这是一个不同的问题。

clang: warning: argument unused during compilation: '-static-libstdc++'表示clang忽略了此标志,因为该标志在当前情况下是无用的。我想到的前两个示例是编译C代码(显然不依赖libstdc ++),或发出不链接的纯编译命令(-c标志)。由于.o文件无法保存有关静态或动态链接的信息,因此必须在链接阶段指定此标志(并且为避免警告,请在链接阶段指定)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

libstdc ++-不使用qmake静态链接

来自分类Dev

libstdc ++-不使用qmake静态链接

来自分类Dev

g ++静态链接到libstdc ++。a错误

来自分类Dev

是否可以静态链接libstdc ++并包装memcpy?

来自分类Dev

MinGW,如何避免链接静态完整的 libstdc++

来自分类Dev

链接静态库与clang无关的顺序

来自分类Dev

如何使用 llvm lld 链接 libstdc++

来自分类Dev

Clang无法使用libstdc ++识别std :: shared_ptr

来自分类Dev

说明Clang动态/静态库链接过程

来自分类Dev

Clang 静态参数 std::fill 导致链接器失败

来自分类Dev

当其他链接的库将stdc ++链接为动态时,如何将libstdc ++链接设置为静态?

来自分类Dev

使用CMake链接静态库

来自分类Dev

CMake:针对libgcc和libstdc ++静态链接到共享库中

来自分类Dev

使用clang到ARM:错误的链接器

来自分类Dev

如果在多个共享库中调用并且启用了libstdc ++静态链接,则C ++流变得很糟糕

来自分类Dev

如何使用SCons与静态库链接?

来自分类Dev

使用CMake将共享库与静态链接

来自分类Dev

使用G ++静态链接Matio库

来自分类Dev

Go程序未使用1.4.2静态链接

来自分类Dev

使用Visual Studio 14静态链接Lua

来自分类Dev

使用静态链接到openssl构建libcurl

来自分类Dev

为什么clang使用libstdc ++删除包含std :: optional的类型上的显式默认构造函数?

来自分类Dev

如何在VS2015中调试Clang静态链接库

来自分类Dev

完全专用模板的constexpr静态成员的CLang上的动态链接失败

来自分类Dev

使用Clang生成C ++静态库时的奇怪行为

来自分类Dev

使用Clang生成C ++静态库时的奇怪行为

来自分类Dev

如何使用Clang的静态分析器跟踪变量?

来自分类Dev

从cpp文件创建动态库,并使用clang创建静态库

来自分类Dev

如何在Clang中检测libstdc ++版本?

Related 相关文章

  1. 1

    libstdc ++-不使用qmake静态链接

  2. 2

    libstdc ++-不使用qmake静态链接

  3. 3

    g ++静态链接到libstdc ++。a错误

  4. 4

    是否可以静态链接libstdc ++并包装memcpy?

  5. 5

    MinGW,如何避免链接静态完整的 libstdc++

  6. 6

    链接静态库与clang无关的顺序

  7. 7

    如何使用 llvm lld 链接 libstdc++

  8. 8

    Clang无法使用libstdc ++识别std :: shared_ptr

  9. 9

    说明Clang动态/静态库链接过程

  10. 10

    Clang 静态参数 std::fill 导致链接器失败

  11. 11

    当其他链接的库将stdc ++链接为动态时,如何将libstdc ++链接设置为静态?

  12. 12

    使用CMake链接静态库

  13. 13

    CMake:针对libgcc和libstdc ++静态链接到共享库中

  14. 14

    使用clang到ARM:错误的链接器

  15. 15

    如果在多个共享库中调用并且启用了libstdc ++静态链接,则C ++流变得很糟糕

  16. 16

    如何使用SCons与静态库链接?

  17. 17

    使用CMake将共享库与静态链接

  18. 18

    使用G ++静态链接Matio库

  19. 19

    Go程序未使用1.4.2静态链接

  20. 20

    使用Visual Studio 14静态链接Lua

  21. 21

    使用静态链接到openssl构建libcurl

  22. 22

    为什么clang使用libstdc ++删除包含std :: optional的类型上的显式默认构造函数?

  23. 23

    如何在VS2015中调试Clang静态链接库

  24. 24

    完全专用模板的constexpr静态成员的CLang上的动态链接失败

  25. 25

    使用Clang生成C ++静态库时的奇怪行为

  26. 26

    使用Clang生成C ++静态库时的奇怪行为

  27. 27

    如何使用Clang的静态分析器跟踪变量?

  28. 28

    从cpp文件创建动态库,并使用clang创建静态库

  29. 29

    如何在Clang中检测libstdc ++版本?

热门标签

归档