为什么gcc / clang默认知道链接到libc?

时间:2019-01-28 04:48:00

标签: c gcc clang shared-libraries libc

当我运行clang / gcc来编译allLocations文件时,不需要显式链接到libc。但是它仍然可以像libc一样工作,并且自动链接了另外两个库。为什么gcc / clang知道自动链接?在哪里提到这种行为?

 myRef.addValueEventListener(new ValueEventListener() {

        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            allLocations.clear();
            for (DataSnapshot allLocs : dataSnapshot.getChildren()) {
                Utilities newUt = allLocs.getValue(Utilities.class);
              allLocations.add(newUt);
            }

1 个答案:

答案 0 :(得分:2)

  

为什么gcc / clang知道自动链接?

为方便起见,GCC开发人员将此内置到GCC中。默认情况下,链接到哪些库的部分内容受所编译语言的影响,该语言是从文件名推导出来的,并且可以通过-x开关进行控制。

  

在哪里提到这种行为?

This page in the GCC documentation提到默认情况下有一些链接的库,并说您可以使用-nostdlib和其他开关禁用或修改此行为,但是我看不到链接的库的明确列表。在默认情况下。它可能因系统/平台以及语言而异。您可以使用-v开关让GCC向您显示它正在执行的命令,链接命令(使用ld)将显示这些库。