【问题标题】:Link only libc, and not libc++ in C++仅链接 libc,而不链接 C++ 中的 libc++
【发布时间】:2016-02-15 14:01:51
【问题描述】:

是否有可能,同时使用clanggcc,以便携 方式 链接libstdc++libc++,但仍链接@ 987654325@ 并使用 C++ 的所有特性(好吧,只有类)。

-nodefaultlibs 在我的第一次测试(在 OS X 上测试)后似乎不起作用,它没有链接 libstdc++,但它也没有链接 libSystem,这是必需的。

【问题讨论】:

  • 手动添加系统库?
  • 我没有动力。你只是想用类编写 C,所以你在 C 代码上运行 C++ 编译器?
  • @CodyGray 是的,我只想让 C 和类一起使用。
  • @KerrekSB 虽然可行,但它不是可移植的。
  • @KerrekSB 在测试只是链接 libc 之后,看起来 libc 在 OS X 上被称为 libSystem,并且链接得很好。

标签: c++ gcc clang


【解决方案1】:

最好、最便携的解决方案是不链接任何默认库,而是手动链接所有内容。

添加:

-nodefaultlibs -lc

不会链接任何东西,然后只链接libc。现在你得到了C with Classes

您可以使用otool -L(在 OS X 上)或ldd(在 Linux 上)进行验证。 在 OSX 上,现在的输出是:

 $ otool -L ./test
   test:
     /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1225.1.1)

而不是

$ otool -L ./test
  ./test:
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1225.1.1)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多