簡體   English   中英

GCC在用Clang++和LLD構建時還涉及到哪一部分?

[英]Which part of GCC is still involved when building with Clang++ and LLD?

我使用 Clang++/LLD 構建了一個非常簡單的程序:

clang++ -fuse-ld=lld -o test test.cpp

我運行 readelf 以確認 LLD 確實被用作 linker,如https://releases.llvm.org/11.0.0/tools/lld/docs/index.html中所述:

$ readelf --string-dump .comment test

String dump of section '.comment':
  [     0]  Linker: LLD 7.0.1
  [    12]  clang version 7.0.1-8+deb10u2 (tags/RELEASE_701/final)
  [    49]  GCC: (Debian 8.3.0-6) 8.3.0

很好,用的linker確實是LDD。 但這讓我想知道為什么那里仍然提到 GCC。 也許是因為標准庫(大概)是用 GCC 構建的? 就是想。

根據您構建 libc++的方式,您可能仍在使用 libgcc 和 libsupc++ 來提供一些由 libc++abi 和 libcxxrt 提供的例程(即便如此,可能仍然需要 libgcc 的某些部分才能使一切正常工作)。 根據平台的不同,可能仍有一些啟動文件或鏈接的 libc 位,其中可能包含也可能不包含對 GCC 的字符串引用。

例如,在 Mac 或 BSD 上,不應再涉及 GCC。

Clang 驅動程序還(過去)使用 GCC 來推斷例如庫和 header 搜索路徑,但我認為它只是作為未知平台的后備。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM