升级到Catalina 10.15后无法在Mac上编译C程序

时间:2019-10-07 23:17:04

标签: c xcode macos gcc macos-catalina

有一个先前的问题Can't compile C program on a Mac after upgrade to Mojave,其答案涵盖了问题出处的大部分变化。

现在-从2019年10月7日星期一开始-您可以升级到macOS Catalina 10.15。同样,即使在升级(从Mojave 10.14.6)升级到Catalina之前安装了XCode 11.0,升级过程中/usr/include目录也被删除了。因此,编译器预期会存在/usr/include目录,因此不再起作用。

针对Mojave问题的主要推荐步骤-使用命令:

open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

由于目录/Library/Developer/CommandLineTools/Packages/不存在(因此尚无要打开的.pkg文件),因此无法正常工作。

是否有一种很好的(官方)方式来创建和填充目录/usr/include

16 个答案:

答案 0 :(得分:28)

在继续之前,请确保安装xcode命令行工具。

xcode-select --install

实际上,您可以做到!实际上,所有的C标头都在此文件夹中找到:

/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/

我们只需要为所有头文件创建符号链接到此文件夹:

/usr/local/include/

对我有用!以下命令行将解决所有问题:

sudo ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/* /usr/local/include/

您将收到一些警告。某些标头已经存在,例如:

ln: /usr/local/include//tcl.h: File exists
ln: /usr/local/include//tclDecls.h: File exists
ln: /usr/local/include//tclPlatDecls.h: File exists
ln: /usr/local/include//tclTomMath.h: File exists
ln: /usr/local/include//tclTomMathDecls.h: File exists
ln: /usr/local/include//tk.h: File exists
ln: /usr/local/include//tkDecls.h: File exists
ln: /usr/local/include//tkPlatDecls.h: File exists

完全可以忽略。就是这样。

答案 1 :(得分:22)

对我来说,向CPATH添加以下路径可以解决此问题:

export CPATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include

答案 2 :(得分:16)

TL; DR

Apple似乎认为/usr/include已经成为渡渡鸟的角色了-它已经灭绝了-也许就像Monty Python的Parrot

使用Apple提供的GCC(实际上是Clang,任何其他名称,如版本信息所示)或Clang都可以避免问题。 /usr/bin/gcc/usr/bin/clang都将在以下四个目录级别中找到系统库:

/Applications/Xcode.app/Contents/Developer/Platforms/…

如果您构建自己的GCC或其他编译器,则(可能)需要对其进行配置,以在Xcode应用程序目录下找到系统库。

探索

升级后,我立即运行XCode 11.0。它想安装一些额外的组件,所以我允许这样做。但是,该操作并没有恢复/usr/include/Library下的目录。

上一个question中的其他建议之一是运行:

xcode-select --install

这样做时,它声称已下载了命令行实用程序,并确保存在/usr/bin/gcc/usr/bin/clang等。这是一个有用的步骤(尽管我之前没有明确检查它们是否存在)。

$ /usr/bin/gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
Apple clang version 11.0.0 (clang-1100.0.33.8)
Target: x86_64-apple-darwin19.0.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
$

使用/usr/bin/gcc,现在可以编译程序:

$ make CC=/usr/bin/gcc al
co  RCS/al.c,v al.c
RCS/al.c,v  -->  al.c
revision 1.7
done
/usr/bin/gcc -I/Users/jleffler/inc -g -O3 -std=c11 -pedantic -Wall -Wextra -Werror -Wshadow -Wmissing-prototypes -Wpointer-arith  -Wold-style-definition -Wcast-qual -Wstrict-prototypes -DHAVE_MEMMEM -DHAVE_STRNDUP -DHAVE_STRNLEN  -DHAVE_GETDELIM   -o al al.c -L/Users/jleffler/lib/64  -ljl
$

但是,/usr/include仍然丢失。现在/Library下有一个目录:

$ ls /Library/Developer
CommandLineTools  PrivateFrameworks
$ ls /Library/Developer/CommandLineTools
Library SDKs    usr
$ ls /Library/Developer/CommandLineTools/SDKs
MacOSX.sdk      MacOSX10.14.sdk MacOSX10.15.sdk
$ ls /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/
Entitlements.plist SDKSettings.json   System
Library            SDKSettings.plist  usr
$

SystemLibrary目录都没有非常有前途的东西。

当所有其他方法都失败时,请阅读手册

下一步-查找并阅读发行说明:

那里没有与此相关的信息。因此,(仅经过一两个小时的努力,AFAICS)Apple不再支持/usr/include的可能性-尽管它仍然具有完全加载的/usr/lib(尽管没有/lib

在添加GCC选项-v的情况下检查另一个编译的时间(在我使用的makefile中,设置UFLAGS会将选项添加到C编译器命令行):

$ make UFLAGS=-v CC=/usr/bin/gcc ww
co  RCS/ww.c,v ww.c
RCS/ww.c,v  -->  ww.c
revision 4.9
done
/usr/bin/gcc -I/Users/jleffler/inc -g -O3 -std=c11 -pedantic -Wall -Wextra -Werror -Wshadow -Wmissing-prototypes -Wpointer-arith  -Wold-style-definition -Wcast-qual -Wstrict-prototypes -DHAVE_MEMMEM -DHAVE_STRNDUP -DHAVE_STRNLEN  -DHAVE_GETDELIM -v  -o ww ww.c -L/Users/jleffler/lib/64  -ljl
Apple clang version 11.0.0 (clang-1100.0.33.8)
Target: x86_64-apple-darwin19.0.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.15.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -emit-obj -disable-free -disable-llvm-verifier -discard-value-names -main-file-name ww.c -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim -fno-strict-return -masm-verbose -munwind-tables -target-sdk-version=10.15 -target-cpu penryn -dwarf-column-info -debug-info-kind=standalone -dwarf-version=4 -debugger-tuning=lldb -ggnu-pubnames -target-linker-version 512.4 -v -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/11.0.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -I /Users/jleffler/inc -D HAVE_MEMMEM -D HAVE_STRNDUP -D HAVE_STRNLEN -D HAVE_GETDELIM -I/usr/local/include -O3 -Wall -Wextra -Werror -Wshadow -Wmissing-prototypes -Wpointer-arith -Wold-style-definition -Wcast-qual -Wstrict-prototypes -Wno-framework-include-private-from-public -Wno-atimport-in-framework-header -Wno-extra-semi-stmt -Wno-quoted-include-in-framework-header -pedantic -std=c11 -fdebug-compilation-dir /Users/jleffler/src/cmd -ferror-limit 19 -fmessage-length 110 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fobjc-runtime=macosx-10.15.0 -fmax-type-align=16 -fdiagnostics-show-option -fcolor-diagnostics -vectorize-loops -vectorize-slp -o /var/folders/77/zx9nk6dn7_dg4xd4stvt42v00000gn/T/ww-4cb85b.o -x c ww.c
clang -cc1 version 11.0.0 (clang-1100.0.33.8) default target x86_64-apple-darwin19.0.0
ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/local/include"
ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/Library/Frameworks"
#include "..." search starts here:
#include <...> search starts here:
 /Users/jleffler/inc
 /usr/local/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/11.0.0/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks (framework directory)
End of search list.
 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -lto_library /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -dynamic -arch x86_64 -macosx_version_min 10.15.0 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -o ww -L/Users/jleffler/lib/64 /var/folders/77/zx9nk6dn7_dg4xd4stvt42v00000gn/T/ww-4cb85b.o -ljl -L/usr/local/lib -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/11.0.0/lib/darwin/libclang_rt.osx.a
 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/dsymutil" -o ww.dSYM ww
$

暴雪中的关键信息是:

-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk

这实际上是编译的“根”目录,因此usrusr/include的子目录应位于该子目录下:

$ ls /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
Entitlements.plist SDKSettings.json   System
Library            SDKSettings.plist  usr
$ ls /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr
bin     include lib     libexec share
$ ls /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include
AppleTextureEncoder.h  dns_util.h             memory.h               simd
AssertMacros.h         dtrace.h               menu.h                 slapi-plugin.h
Availability.h         editline               miscfs                 spawn.h
AvailabilityInternal.h err.h                  module.modulemap       sqlite3.h
AvailabilityMacros.h   errno.h                monetary.h             sqlite3ext.h
AvailabilityVersions.h eti.h                  monitor.h              stab.h
…lots more lines…
dirent.h               mach-o                 security               xcselect.h
disktab.h              mach_debug             semaphore.h            xlocale
dispatch               machine                servers                xlocale.h
dlfcn.h                malloc                 setjmp.h               xpc
dns.h                  math.h                 sgtty.h                zconf.h
dns_sd.h               membership.h           signal.h               zlib.h
$

这表明长达一英里且完全难忘的目录名确实包含标准的C和POSIX标头,以及Apple特定的附加功能。

先前的/usr/local/目录似乎是完整的;关于usr/local/include下不存在的-isysrootdir的警告是无害的(并且没有-v选项就看不到)。

答案 3 :(得分:6)

设置以下隐式Make变量以指向Xcode命令行工具(Xcode CLI)标题现在所在的位置:

export CFLAGS+=-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
export CCFLAGS+=-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
export CXXFLAGS+=-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
export CPPFLAGS+=-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk

-isysroot option将根文件的位置从系统根目录/移开。

因此,这确保了常见的/usr/*文件位于新位置。

也就是说,现在找到了/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk中的文件。这些文件是:

Entitlements.plist 
Library
SDKSettings.json
SDKSettings.plist
System
usr

答案 4 :(得分:3)

对我来说,它的工作原理如下:

1. xcode-select --install

2. sudo ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/* /usr/local/include/

3. export SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk

答案 5 :(得分:3)

在Xcode版本11.5(11E608c)的MacOS Catalina 10.15.4上,我还需要更新.zshrc中的库路径(MacOSX.sdk路径是新的):

export CPATH='/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include:/opt/local/include'
export LIBRARY_PATH='/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib:/opt/local/lib'

答案 6 :(得分:2)

我是OS X中使用R的C ++编译器的新手,并且遇到了同样的问题,即更新OS后C ++无法找到标头(缺少math.h,尽管它在那里)。我遵循了https://thecoatlessprofessor.com/programming/cpp/r-compiler-tools-for-rcpp-on-macos/的指示,但没有任何变化。

最后,在我重新安装Xcode CLI后,它对我有用

xcode-select --install

,然后按照@Coatless建议将标志更改为Var:

export CFLAGS=-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
export CCFLAGS=-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
export CXXFLAGS=-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
export CPPFLAGS=-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk

答案 7 :(得分:1)

如果使用外部 LLVM 安装,请将这些添加到您的 ~/.bash_profile

LLVM_PATH="/usr/local/opt/llvm/" # or any other path
LLVM_VERSION="11.0.0"
export PATH="$LLVM_PATH:$PATH"
export SDKROOT=$(xcrun --sdk macosx --show-sdk-path)
export LD_LIBRARY_PATH="$LLVM_PATH/lib/:$LD_LIBRARY_PATH"
export DYLD_LIBRARY_PATH="$LLVM_PATH/lib/:$DYLD_LIBRARY_PATH"
export CPATH="$LLVM_PATH/lib/clang/$LLVM_VERSION/include/"
export LDFLAGS="-L$LLVM_PATH/lib"
export CPPFLAGS="-I$LLVM_PATH/include"
export CC="$LLVM_PATH/bin/clang"
export CXX="$LLVM_PATH/bin/clang++"

(调整clang版本和外部llvm安装路径。)

然后运行source ~/.bash_profile

答案 8 :(得分:0)

在遵循此问题的 Komol Nath Roy 答案后,我的/usr/local/include中仍然缺少

apue.h依赖项。

我从git中手动下载了依赖项,并将其放置在/usr/local/include

答案 9 :(得分:0)

就我而言,我似乎也使用自制软件安装了llvmgcc。当我删除这些文件,从而完全依靠macOS叮当声时,它可以找到标头,并且编译再次起作用。

答案 10 :(得分:0)

解决方案比我想象的要简单。安装clang / llvm。

brew install llvm

然后,我们需要自己创建符号链接。

for f in /usr/local/Cellar/llvm/9.0.0_1/bin/clang*; do ln -s ${f} /usr/local/bin/"${f##*/}"; done

ln -s /usr/local/Cellar/llvm/9.0.0_1/include/c++ /usr/local/include/c++

根据您的llvm版本,修改以上命令。

现在,您可以编译C ++程序而无需传递任何自定义标志。

clang++ hello.cpp

答案 11 :(得分:0)

我尝试了1)手动链接2)brew install llvm,但是它们不起作用。

最后,这对我有用: https://gitmemory.com/issue/pytorch/pytorch/31190/565153503

通过设置以下环境变量:

export CC=clang
export CXX=clang++
export MACOSX_DEPLOYMENT_TARGET=10.9

答案 12 :(得分:0)

简短回答

 <script>

    var map;
    var businessGeocoder;
    var employeeResidenceGeocoder;
    var businessLocationClickFeature;
    var employeeResidenceLocationClickFeature;
    
    var screenPoint;
    var address;
    var geocodeFeature;
    var geocodePopup;
    var geocodeCensusTract;
    var geocodeCensusBlockGroup;
    

    var businessLocationPolygon;
    var employeeResidenceLocationPolygon; 
  
    
     
    function initialize() {
        businessGeocoder = new MapboxGeocoder({
                               accessToken: mapboxgl.accessToken,
                               flyTo: {
                                      speed: 100
                               },
                               zoom: 17,
                               placeholder: "Search for a business location",
                               mapboxgl: mapboxgl
                               })
        employeeResidenceGeocoder = new MapboxGeocoder({
                               accessToken: mapboxgl.accessToken,
                               flyTo: {
                                      speed: 100
                               },
                               zoom: 17,
                               placeholder: "Search for an employee's residence",
                               mapboxgl: mapboxgl
                               })                       
                              
        // // // adds geocoder outside of map (inside of map would make it a 'map control')
        // document.getElementById('geocoder1').appendChild(businessGeocoder.onAdd(map));
        // document.getElementById('geocoder2').appendChild(employeeResidenceGeocoder.onAdd(map));
     
        map.addControl(businessGeocoder);
        map.addControl(employeeResidenceGeocoder);

        businessGeocoder.on('result', businessAddress);
        employeeResidenceGeocoder.on('result', employeeResidenceAddress);
        
    }
    

    function businessAddress (obj) {
        address = obj.result.place_name;
        $(".geocode-result-area").html('<b>Geocoded Business Address: </b>' + address + '<br/><div class="medium-font">Click the blue address pin on the map for updated results.</div>');
        $(".geocode-click-result-area").html("");
        map.on('click', businessLocationClickInfo);
    }
    
    
    function employeeResidenceAddress (obj) {
        address = obj.result.place_name;
        $(".geocode-result-area").html('<b>Geocoded Employee Residence Address: </b>' + address + '<br/><div class="medium-font">Click the blue address pin on the map for updated results.</div>');
        $(".geocode-click-result-area").html("");
        map.on('click', employeeResidenceLocationClickInfo);
    }
    
    
    
    function businessLocationClickInfo (obj) { 
        businessLocationClickFeature = map.queryRenderedFeatures(obj.point, {
            layers: ['tract-4332-1sbuyl','blockgroups-4332-9mehvk','businesslocation'] 
        });

        if (businessLocationClickFeature.length == 3) {
            $(".geocode-click-result-area").html('<br/>This area meets the <span style="background-color:yellow">business location criteria</span> based on the following thresholds:'
                                                 + '<table><tr><td>Renewal Community</td><td>' + businessLocationClickFeature[2].properties.Inquiry1 + '</td></tr>'
                                                 + '<tr><td>CT & BG Poverty Rate &#8805; 20%</td><td>' + businessLocationClickFeature[2].properties.Inquiry2 + '</td></tr></table>'
                                                 + '<p><b>' + businessLocationClickFeature[0].properties.CountyName + " County" + '<br/>' 
                                                 + businessLocationClickFeature[0].properties.NAMELSAD + '<br/>' 
                                                 + businessLocationClickFeature[1].properties.NAMELSAD + '</b></p>'
                                                 +'<table><tr><th></th><th>Poverty Rate</th></tr><tr><td>CT ' 
                                                 + businessLocationClickFeature[0].properties.TRACTCE + '</td><td>' 
                                                 + businessLocationClickFeature[0].properties.PovRate + "%" + '</td></tr><tr><td>BG '
                                                 + businessLocationClickFeature[1].properties.BLKGRPCE + '</td><td>' 
                                                 + businessLocationClickFeature[1].properties.PovRate + "%" + '</td></tr></table>'
                                                );
        }
        else {
            $(".geocode-click-result-area").html('<br/> This area <u style = "color:red;">does not</u> meet the business location criteria based on the following thresholds:'
                                                 + '<table><tr><td>Renewal Community</td><td>No</td></tr>'
                                                 + '<tr><td>CT & BG Poverty Rate &#8805; 20%</td><td>No</td></tr></table>'
                                                 + '<p><b>' + businessLocationClickFeature[0].properties.CountyName + " County" + '<br/>' 
                                                 + businessLocationClickFeature[0].properties.NAMELSAD + '<br/>' 
                                                 + businessLocationClickFeature[1].properties.NAMELSAD + '</b></p>'
                                                 + '<table><tr><th></th><th>Poverty Rate</th></tr><tr><td>CT ' 
                                                 + businessLocationClickFeature[0].properties.TRACTCE + '</td><td>' 
                                                 + businessLocationClickFeature[0].properties.PovRate + "%" + '</td></tr><tr><td>BG '
                                                 + businessLocationClickFeature[1].properties.BLKGRPCE + '</td><td>' 
                                                 + businessLocationClickFeature[1].properties.PovRate + "%" + '</td></tr></table>'
                                                 );
        }
    }

    
    
    
    function employeeResidenceLocationClickInfo (obj) { 
        employeeResidenceLocationClickFeature = map.queryRenderedFeatures(obj.point, {
            layers: ['tract-4332-1sbuyl','blockgroups-4332-9mehvk','employeeresidencelocation'] 
        });
        if (employeeResidenceLocationClickFeature.length == 3) {
            $(".geocode-click-result-area").html('<br/>This area meets the <span style="background-color:yellow">employee residence location criteria</span> based on the following thresholds:'
                                                 + '<table><tr><td>Renewal Community</td><td>' + employeeResidenceLocationClickFeature[2].properties.Inquiry1 + '</td></tr>'
                                                 + '<tr><td>CT % LMI &#8805; 70%</td><td>' + employeeResidenceLocationClickFeature[2].properties.Inquiry2 + '</td></tr>'
                                                 + '<tr><td>CT & all BG Poverty Rate &#8805; 20%</td><td>' + employeeResidenceLocationClickFeature[2].properties.Inquiry3 + '</td></tr></table>'
                                                 + '<p><b>' + employeeResidenceLocationClickFeature[0].properties.CountyName + " County" + '<br/>' 
                                                 + employeeResidenceLocationClickFeature[0].properties.NAMELSAD + '<br/>' 
                                                 + employeeResidenceLocationClickFeature[1].properties.NAMELSAD + '</b></p>'
                                                 + '<table id="CensusTable"><tr><th></th><th>Poverty Rate</th><th>LMI</th></tr><tr><td>CT ' 
                                                 + employeeResidenceLocationClickFeature[0].properties.TRACTCE + '</td><td>' 
                                                 + employeeResidenceLocationClickFeature[0].properties.PovRate + "%" + '</td><td>' 
                                                 + employeeResidenceLocationClickFeature[0].properties.LMIPerc + "%" + '</td></tr>');
   
            var BGsin20PovertyCT = map.queryRenderedFeatures(
                { layers: ['blockgroups-4332-9mehvk'],
                filter: ["==", "TRACTCE", employeeResidenceLocationClickFeature[0].properties.TRACTCE] 
                });
            var unique = [];
            var distinct = [];
            for (let i = 0; i < BGsin20PovertyCT.length; i++ ){
                if (!unique[BGsin20PovertyCT[i].properties.BLKGRPCE]){
                distinct.push(BGsin20PovertyCT[i]);
                unique[BGsin20PovertyCT[i].properties.BLKGRPCE] = 1;
                }
            }
            for (let i = 0; i < distinct.length; i++ ){
                $("#CensusTable").append('<tr><td>BG ' + distinct[i].properties.BLKGRPCE + '</td><td>'
                                         + distinct[i].properties.PovRate + "%" + '</td><td>-</td></tr></table>'
                                         );
            } 
        }
        else {
            $(".geocode-click-result-area").html('<br/> This area <u style = "color:red;">does not</u> meet the employee residence location criteria based on the following thresholds:'
                                                 + '<table><tr><td>Renewal Community</td><td>No</td></tr>'
                                                 + '<tr><td>CT % LMI &#8805; 70%</td><td>No</td></tr>'
                                                 + '<tr><td>CT & all BG Poverty Rate &#8805; 20%</td><td>No</td></tr></table>'
                                                 + '<p><b>' + employeeResidenceLocationClickFeature[0].properties.CountyName + " County" + '<br/>' 
                                                 + employeeResidenceLocationClickFeature[0].properties.NAMELSAD + '<br/>' 
                                                 + employeeResidenceLocationClickFeature[1].properties.NAMELSAD + '</b></p>'
                                                 + '<table id="CensusTable"><tr><th></th><th>Poverty Rate</th><th>LMI</th></tr><tr><td>CT ' 
                                                 + employeeResidenceLocationClickFeature[0].properties.TRACTCE + '</td><td>' 
                                                 + employeeResidenceLocationClickFeature[0].properties.PovRate + "%" + '</td><td>' 
                                                 + employeeResidenceLocationClickFeature[0].properties.LMIPerc + "%" + '</td></tr>');
                var BGsin20PovertyCT = map.queryRenderedFeatures(
                    { layers: ['blockgroups-4332-9mehvk'],
                    filter: ["==", "TRACTCE", employeeResidenceLocationClickFeature[0].properties.TRACTCE] 
                    });
                var unique = [];
                var distinct = [];
                for (let i = 0; i < BGsin20PovertyCT.length; i++ ){
                    if (!unique[BGsin20PovertyCT[i].properties.BLKGRPCE]){
                    distinct.push(BGsin20PovertyCT[i]);
                    unique[BGsin20PovertyCT[i].properties.BLKGRPCE] = 1;
                    }
                }
                for (let i = 0; i < distinct.length; i++ ){
                    $("#CensusTable").append('<tr><td>BG ' + distinct[i].properties.BLKGRPCE + '</td><td>'
                                             + distinct[i].properties.PovRate + "%" + '</td><td>-</td></tr></table>'
                                             );
                } 
        }
    }
    




    mapboxgl.accessToken = 'pk.eyJ1Ijoia3l1bmdhaGxpbSIsImEiOiJjanJyejQyeHUyNGwzNGFuMzdzazh1M2k1In0.TcQEe2aebuQZ4G7d827A9Q';
    
    map = new mapboxgl.Map({
    container: 'map',
    style: 'mapbox://styles/kyungahlim/ckd226uao1p7i1iqo8ag2ewmu',
    center: [-95.925, 29.575],
    zoom: 7
    });

    
    map.on('load', initialize); 

    

    
    // // Center the map on the coordinates of any clicked symbol from the 'symbols' layer.
    // map.on('click', 'symbols', function(e) {
    // map.flyTo({
    // center: e.features[0].geometry.coordinates
    // });
    // });
     
    // // Change the cursor to a pointer when the it enters a feature in the 'symbols' layer.
    // map.on('mouseenter', 'symbols', function() {
    // map.getCanvas().style.cursor = 'pointer';
    // });
     
    // // Change it back to a pointer when it leaves.
    // map.on('mouseleave', 'symbols', function() {
    // map.getCanvas().style.cursor = '';
    // });



var geojson = {
  type: 'FeatureCollection',
  features: [{
    type: 'Feature',
    geometry: {
      type: 'Point',
      coordinates: [-95.925, 29.575]
    },
    properties: {
      title: 'Mapbox',
      description: 'Washington, D.C.'
    }
  },
  {
    type: 'Feature',
    geometry: {
      type: 'Point',
      coordinates: [-122.414, 37.776]
    },
    properties: {
      title: 'Mapbox',
      description: 'San Francisco, California'
    }
  }]
};


// // geocode the typed-in address, zoom to the location, and put a pin on address
// function codeAddress() {
//     sAddress = document.getElementById('inputTextAddress').value;
//     geocoder.geocode( { 'address': sAddress}, function(results, status) {
//         //latitude = results[0].geometry.location.lat();
//         //longitude = results[0].geometry.location.lng();
//         coordinate = results[0].geometry.location;

//         if (status == google.maps.GeocoderStatus.OK) {
//             if (GeocodeMarker){
//                 GeocodeMarker.setMap(null);
//             }
// //            bounds.extend(results[0].geometry.location);
// //            PuppyMap.fitBounds(bounds);
//             PuppyMap.setCenter(results[0].geometry.location);
//             PuppyMap.setZoom(14);
//             GeocodeMarker = new google.maps.Marker({
//                 map:PuppyMap,
//                 position: results[0].geometry.location,
//                 animation: google.maps.Animation.DROP,
//                 icon: housePin,
//                 zoom: 0
//             });

//         }
//         else{
//             alert("Geocode was not successful for the following reason: " + status);
//         }
//     });
// }



  var marker = new mapboxgl.Marker(document.createElement('div'))
    .setLngLat( [-95.925, 29.575])
    .addTo(map);                              


// // add markers to map
// geojson.features.forEach(function(marker) {

//   // create a HTML element for each feature
//   var el = document.createElement('div');
//   el.className = 'marker';

//   // make a marker for each feature and add to the map
//   new mapboxgl.Marker(el)
//     .setLngLat(marker.geometry.coordinates)
//     .addTo(map);
// });

</script>

The Result

说明

在当前的macOS版本中,在System.Timers.Timer tmr = new System.Timers.Timer(); tmr.Elapsed += new ElapsedEventHandler(Checking_Options); tmr.Interval = 10; // tmr.Enabled = true; // public void Checking_Options(object source, ElapsedEventArgs e) { switch (listBox2.SelectedIndex) { case 0: 而不是/Library/Developer/CommandLineTools/usr/bin/clang++ -o main main.cpp -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk 中搜索c / c ++标头。因此,您需要使用/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/选项“重置”根目录。

希望这是合理的。

答案 13 :(得分:0)

就我而言,我做了数百万件事情,但我认为以下步骤有助于修复ruby安装。

  1. xcode-select --install
  2. 设置这些标志
export CFLAGS=-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
export CCFLAGS=-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
export CXXFLAGS=-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
export CPPFLAGS=-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
  1. sudo ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/* /usr/local/include/

  2. export SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk

  3. rbenv install 2.6.3 -v

答案 14 :(得分:0)

如果同时安装了命令行工具和XCode,请确保实际上正在使用通过命令行工具安装的SDK:

#检查当前sdk

$ xcrun --show-sdk-path

#Change sdk

$ sudo xcode-select -s /Library/Developer/CommandLineTools #Using CommandLineTools SDK

$ sudo xcode-select -s /Applications/Xcode.app/Contents/Developer #Using XCode.app SDK

doc表示敬意。

答案 15 :(得分:0)

对我来说错误是:xcrun[20873:1179298] Failed to open macho file at /Library/Developer/CommandLineTools/usr/bin/clang++ for reading: Too many levels of symbolic links

所以我打开我的终端并转到以下文件夹(如错误消息所述):/Library/Developer/CommandLineTools/usr/bin/

然后我删除了名为 clang++ 的快捷方式文件

sudo rm clang++

接下来,我复制了一个名为 clang 的可执行文件,并将复制的文件重命名为 clang++

sudo cp clang clang++

终于成功了。