C++ 为什么clang仍然需要libgcc.a来编译我的代码?

C++ 为什么clang仍然需要libgcc.a来编译我的代码?,c++,linux,gcc,clang,llvm,C++,Linux,Gcc,Clang,Llvm,我交叉编译(主机=linux x86_64,目标=linux aarch64) /path/to/clang--target=aarch64 linux gnu-v main.cpp-o main-fuse ld=lld-L./libs-lc-lc\u nonshared-Xlinker-Map=a.Map 在-L./libs文件夹中,我放置了来自目标的所有依赖项。排除libgcc.a时,会发生此链接器错误 ld.lld:错误:找不到库-lgcc 我添加了-Map选项来获取有关链接静态库的信息。

我交叉编译(主机=linux x86_64,目标=linux aarch64)

/path/to/clang--target=aarch64 linux gnu-v main.cpp-o main-fuse ld=lld-L./libs-lc-lc\u nonshared-Xlinker-Map=a.Map

在-L./libs文件夹中,我放置了来自目标的所有依赖项。排除libgcc.a时,会发生此链接器错误

ld.lld:错误:找不到库-lgcc

我添加了-Map选项来获取有关链接静态库的信息。在映射文件中,我看不到对libgcc.a的引用。。。但我努力阅读地图文件。有很多行带有
。不知道那些是什么。见下面的地图

问题

  • 为什么这么简单的程序仍然需要libgcc.a?我读了又看
    • (a) 链接器要求libgcc执行自己的链接工作,或者
    • (b) 链接器使用libgcc是因为我的代码需要libgcc提供的东西吗
    • 我想是(b),但我只是想确定一下

  • a、 地图

    VMA LMA尺寸在符号中向外对齐
    10270 10270 1b 1.内部
    10270 10270 1b 1:(.interp)
    1029010290A8.dynsym
    10290 10290 a8:(.dynsym)
    1033810338e2.gnu.version
    1033810338E2:(.gnu.version)
    10348 10348 20 4.gnu.version\u r
    10348 10348 20 4:(.gnu.version\u r)
    10368 10368 1c 8.gnu.hash
    10368103681C8:(.gnu.hash)
    1038410384871.dynstr
    1038410384871:(.dynstr)
    10410 10410 18 8.相对动态
    1041010410188:(.相对动态)
    10428 10428 48 8.相对位置
    1042810428488:(.相对plt)
    10470 10470 20 4.注:ABI-tag
    10470 10470 20 4 crt1.o:(.注:ABI标签)
    10470 10470 0 1美元d
    10490104904.罗达
    10490104904:(.rodata)
    1049410494C4.eh_框架hdr
    1049410494C4:(.eh_frame_hdr)
    104a0 104a0 4.eh_框架
    20000 210 8.文本
    20000 20000 48 8 crt1.o:(.文本)
    20000 1美元x
    20000 20000 1_开始
    2002c 2002c 01美元d
    20048 20048 14 4 crti.o:(.文本)
    20048 20048 0 1美元x
    20048 20048 14 1呼叫弱\u fn
    20060 20060 e0 8 crtbegin.o:(.text)
    20060 20060 0 1美元x
    20060 20060 0 1注销\u tm\u克隆
    200902009001美元d
    200982009801$x
    20098 20098 0 1寄存器\u tm\u克隆
    200D0200D001$d
    200d8 200d8 0 1美元x
    200d8 200d8 0 1全球数据中心
    20108 20108 0 1帧_假人
    20138 20138 01美元d
    20140 20140 54 4/tmp/main-762849.o:(.文本)
    20140 20140 0 1美元x.0
    20140 20140 10 1做数学(国际*)
    20150 20150 44 1主
    20194201947C4./libs/libc_nonshared.a(elf init.oS):(.text)
    201942019401美元x
    20194 20194 78 1 uu libc_csu_init
    2020c 2020c 4 1
    20210 20210 0 1 crtend.o:(.text)
    20210 20210 01 crtn.o:(.文本)
    20210 20210 14 4.初始
    20210 20210 c 4 crti.o:(.init)
    20210 20210 01美元x
    20210 20210 0 1 _init
    2021c 2021c 8 1 crtn.o:(.init)
    2021c 2021c 0 1美元x
    20224 20224 10 4.完成
    20224 20224 8 4 crti.o:(.fini)
    20224 20224 0 1美元x
    20224 20224 0 1u fini
    2022c 2022c 8 1 crtn.o:(.fini)
    2022c 2022c 0 1美元x
    20240 20240 50 16.plt
    20240 20240 50 16:(.plt)
    30000 30000 10 8.数据
    30000 4 1 crt1.o:(.数据)
    30000 300000 1数据\u开始
    30000 300000 1\u数据\u开始
    30004 30004 01 crti.o:(.数据)
    30008 30008 crtbegin.o:(.数据)
    30008 30008 01美元d
    30008 30008 0 1\u dso\u手柄
    30010301001./libs/libc_非共享.a(elf init.oS):(.data)
    300103010.o:(.数据)
    3.
    
    int main(int argc, char **argv)
    {
        return 0;
    }
    
         VMA              LMA     Size Align Out     In      Symbol
       10270            10270       1b     1 .interp
       10270            10270       1b     1         <internal>:(.interp)
       10290            10290       a8     8 .dynsym
       10290            10290       a8     8         <internal>:(.dynsym)
       10338            10338        e     2 .gnu.version
       10338            10338        e     2         <internal>:(.gnu.version)
       10348            10348       20     4 .gnu.version_r
       10348            10348       20     4         <internal>:(.gnu.version_r)
       10368            10368       1c     8 .gnu.hash
       10368            10368       1c     8         <internal>:(.gnu.hash)
       10384            10384       87     1 .dynstr
       10384            10384       87     1         <internal>:(.dynstr)
       10410            10410       18     8 .rela.dyn
       10410            10410       18     8         <internal>:(.rela.dyn)
       10428            10428       48     8 .rela.plt
       10428            10428       48     8         <internal>:(.rela.plt)
       10470            10470       20     4 .note.ABI-tag
       10470            10470       20     4         crt1.o:(.note.ABI-tag)
       10470            10470        0     1                 $d
       10490            10490        4     4 .rodata
       10490            10490        4     4         <internal>:(.rodata)
       10494            10494        c     4 .eh_frame_hdr
       10494            10494        c     4         <internal>:(.eh_frame_hdr)
       104a0            104a0        4     4 .eh_frame
       20000            20000      210     8 .text
       20000            20000       48     8         crt1.o:(.text)
       20000            20000        0     1                 $x
       20000            20000        0     1                 _start
       2002c            2002c        0     1                 $d
       20048            20048       14     4         crti.o:(.text)
       20048            20048        0     1                 $x
       20048            20048       14     1                 call_weak_fn
       20060            20060       e0     8         crtbegin.o:(.text)
       20060            20060        0     1                 $x
       20060            20060        0     1                 deregister_tm_clones
       20090            20090        0     1                 $d
       20098            20098        0     1                 $x
       20098            20098        0     1                 register_tm_clones
       200d0            200d0        0     1                 $d
       200d8            200d8        0     1                 $x
       200d8            200d8        0     1                 __do_global_dtors_aux
       20108            20108        0     1                 frame_dummy
       20138            20138        0     1                 $d
       20140            20140       54     4         /tmp/main-762849.o:(.text)
       20140            20140        0     1                 $x.0
       20140            20140       10     1                 do_math(int*)
       20150            20150       44     1                 main
       20194            20194       7c     4         ./libs/libc_nonshared.a(elf-init.oS):(.text)
       20194            20194        0     1                 $x
       20194            20194       78     1                 __libc_csu_init
       2020c            2020c        4     1                 __libc_csu_fini
       20210            20210        0     1         crtend.o:(.text)
       20210            20210        0     1         crtn.o:(.text)
       20210            20210       14     4 .init
       20210            20210        c     4         crti.o:(.init)
       20210            20210        0     1                 $x
       20210            20210        0     1                 _init
       2021c            2021c        8     1         crtn.o:(.init)
       2021c            2021c        0     1                 $x
       20224            20224       10     4 .fini
       20224            20224        8     4         crti.o:(.fini)
       20224            20224        0     1                 $x
       20224            20224        0     1                 _fini
       2022c            2022c        8     1         crtn.o:(.fini)
       2022c            2022c        0     1                 $x
       20240            20240       50    16 .plt
       20240            20240       50    16         <internal>:(.plt)
       30000            30000       10     8 .data
       30000            30000        4     1         crt1.o:(.data)
       30000            30000        0     1                 data_start
       30000            30000        0     1                 __data_start
       30004            30004        0     1         crti.o:(.data)
       30008            30008        8     8         crtbegin.o:(.data)
       30008            30008        0     1                 $d
       30008            30008        0     1                 __dso_handle
       30010            30010        0     1         ./libs/libc_nonshared.a(elf-init.oS):(.data)
       30010            30010        0     1         crtend.o:(.data)
       30010            30010        0     1         crtn.o:(.data)
       30010            30010        0     8 .tm_clone_table
       30010            30010        0     8         crtbegin.o:(.tm_clone_table)
       30010            30010        0     1                 __TMC_LIST__
       30010            30010        0     8         crtend.o:(.tm_clone_table)
       30010            30010        0     1                 __TMC_END__
       30010            30010       30     8 .got.plt
       30010            30010       30     8         <internal>:(.got.plt)
       40000            40000        8     8 .jcr
       40000            40000        0     8         crtbegin.o:(.jcr)
       40000            40000        0     1                 __JCR_LIST__
       40000            40000        8     8         crtend.o:(.jcr)
       40000            40000        0     1                 $d
       40000            40000        0     1                 __JCR_END__
       40008            40008        8     8 .fini_array
       40008            40008        8     8         crtbegin.o:(.fini_array)
       40008            40008        0     1                 $d
       40008            40008        0     1                 __do_global_dtors_aux_fini_array_entry
       40010            40010        8     8 .init_array
       40010            40010        8     8         crtbegin.o:(.init_array)
       40010            40010        0     1                 $d
       40010            40010        0     1                 __frame_dummy_init_array_entry
       40018            40018      180     8 .dynamic
       40018            40018      180     8         <internal>:(.dynamic)
       40198            40198        8     8 .got
       40198            40198        8     8         <internal>:(.got)
       50000            50000        1     1 .bss
       50000            50000        0     1         crt1.o:(.bss)
       50000            50000        0     1         crti.o:(.bss)
       50000            50000        1     1         crtbegin.o:(.bss)
       50000            50000        1     1                 completed.7557
       50000            50000        0     1                 $d
       50001            50001        0     1         ./libs/libc_nonshared.a(elf-init.oS):(.bss)
       50001            50001        0     1         crtend.o:(.bss)
       50001            50001        0     1         crtn.o:(.bss)
           0                0       24     1 .gnu_debuglink
           0                0        c     1         crt1.o:(.gnu_debuglink)
           c                c        c     1         crti.o:(.gnu_debuglink)
          18               18        c     1         crtn.o:(.gnu_debuglink)
           0                0       9d     1 .comment
           0                0       9d     1         <internal>:(.comment)
           0                0      5b8     8 .symtab
           0                0      5b8     8         <internal>:(.symtab)
           0                0      119     1 .shstrtab
           0                0      119     1         <internal>:(.shstrtab)
           0                0      228     1 .strtab
           0                0      228     1         <internal>:(.strtab)