Mojave로 업그레이드 한 후 Mac에서 C 프로그램을 컴파일 할 수 없습니다 terminated. gcc가 이미 설치되어

터미널에서 gcc 명령을 사용하여 C 프로그램을 컴파일했지만 갑자기 Mac OS (macOS 10.14 Mojave 및 XCode 10.0)로 업데이트 한 후 메시지가 수신되기 시작했습니다.

test.c:8:10: fatal error: stdio.h: No such file or directory
#include <stdio.h>
         ^~~~~~~~~
compilation terminated.

gcc가 이미 설치되어 /usr/local/bin있고 실제로 gcc가 있습니다. 다른 iMac에서 동일한 파일을 실행하려고 시도했지만 아무런 문제없이 작동했습니다.

실행을 시도했지만 xcode-select --install이미 설치되어 있으므로 현재 발생하는 문제를 해결하지 못했습니다. gcc이 문제를 해결하기 위해 다른 리소스에서 일부 명령을 복사하여 붙여 넣기를 시작한 후에 는 찾을 수없는 것처럼 경로가 엉망 입니다.

이것에 대한 도움이 필요합니다.



답변

TL; DR

최신 ‘명령 줄 도구’패키지를 다운로드하고 터미널 (명령 줄)에서 실행하십시오.

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

Catalina에 대한 일부 정보는 Catalina 10.15로 업그레이드 한 후 Mac에서 C 프로그램을 컴파일 할 수 없음을 참조하십시오 .


다소 광범위한 의견에서 반 일관된 답변을 추출하는 중…

전문

종종 xcode-select --install올바른 해결책 이었지만 이번에는 도움이되지 않는 것 같습니다. 기본 Xcode GUI 인터페이스를 실행 해 보셨습니까? 추가 소프트웨어를 설치하고 정리할 수 있습니다. Xcode 10.0을 설치 한 후 일주일 이상 전에 Mojave로 업그레이드하기 전에 그렇게했습니다.

GCC가에 설치된 경우 /usr/local/binXcode의 GCC를 사용하지 않는 것 같습니다. 일반적으로에 설치됩니다 /usr/bin.

나도 macOS 10.14 Mojave 및 Xcode 10.0으로 업데이트했습니다. 그러나 시스템 /usr/bin/gcc과 시스템 모두 /usr/bin/clang나를 위해 일하고 있습니다 ( Apple LLVM version 10.0.0 (clang-1000.11.45.2) Target: x86_64-apple-darwin18.0.0두 가지 모두). 집에서 만든 GCC 8.2.0에서 헤더를 찾지 못하는 /usr/include문제가 /usr/local/bin/gcc있습니다. 이는 헤더를 찾지 못하는 문제와 유사 합니다.

약간의 비교를 마쳤으며 Mojave 시스템에는 전혀 없지만 /usr/include아직 /usr/bin/clang컴파일 할 수 있습니다. 머리글 ( _stdio.h, 밑줄이 그어진)이 내 예전에있었습니다 /usr/include. 지금은 누락되었습니다 (따라서 GCC 8.2.0의 문제). 나는 xcode-select --installxcode-select: note: install requested for command line developer tools” 라고 말한 다음 동의 한 라이센스를 보여주는 GUI 설치 프로그램을 실행했으며 명령 줄 도구를 다운로드하여 설치했습니다.

그런 다음 Xcode GUI (명령 공간, Xcode, return)를 실행했으며 더 많은 소프트웨어를 설치해야하지만 여전히 no이라고 말했습니다 /usr/include. 하지만 컴파일 수 /usr/bin/clang/usr/bin/gcc– 그리고 -v옵션은 사용중인 제안

InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

작업 솔루션

그런 다음 Maxxx 다음 같이 지적했습니다 .

방법을 찾았습니다. Xcode 10을 사용하는 경우 /usrFinder에서로 이동 하면 더 이상 ‘include’라는 폴더가 표시되지 않으므로 터미널에 포함 된 헤더 파일이 없다고 터미널이 불평합니다 ‘include’폴더 에서 엑스 코드 10.0 릴리스 노트 ,이 패키지가 말한다 :

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

/usr/include폴더를 설치 하려면 해당 패키지를 설치해야합니다 . 그렇다면 잘 가야합니다.

다른 모든 방법이 실패하면 설명서 또는이 경우 릴리스 정보를 읽으십시오. 애플이 유닉스 문화 유산을 등지고 싶어한다는 사실에 놀랄만큼 놀랍지는 않지만 실망합니다. 그들이 조심한다면, 그들은 나를 몰아 낼 수있었습니다. 정보 주셔서 감사합니다.

커맨드 라인에서 다음 명령을 사용하여 패키지를 설치하면 /usr/include다시 한 번 GCC 8.2.0 이 다시 작동합니다.

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

명령 줄 도구 다운로드

Vesal 이 귀중한 의견 에서 지적한 것처럼 Mojave 10.14에서 Xcode 10.1 용 Command Line Tools 패키지를 다운로드해야합니다.

다운로드를 받으려면 Apple ID로 로그인해야합니다. 다운로드가 완료되면 Command Line Tools 패키지를 설치하십시오. 그런 다음 ‘작업 솔루션’섹션에 설명 된대로 헤더를 설치하십시오.

이것은 Mojave 10.14.1에서 나를 위해 일했습니다. 전에 이것을 다운로드 했어야했지만이 질문에 대답 할 때까지 잊어 버렸습니다.

Mojave 10.14.4 및 Xcode 10.2로 업그레이드

2019 년 5 월 17 일쯤에 Mojave 10.14.4로 업데이트되었으며 Xcode 10.2 명령 줄 도구도 업그레이드되었습니다 (또는 Xcode 10.1 명령 줄 도구가 10.2로 업그레이드되었습니다). open도시 명령은 상기 누락 헤더를 고정. 기본 Xcode를 10.2로 업그레이드 한 다음 명령 행 도구 및 헤더 패키지를 다시 설치하는 모험이 여전히있을 수 있습니다.

Xcode 10.3으로 업그레이드 (Mojave 10.14.6 용)

2019-07-22에서 App Store를 통해 Xcode 10.3으로의 업그레이드가 가능하며 iOS 12.4, tvOS 12.4, watchOS 5.3 및 macOS Mojave 10.14.6 용 SDK가 포함되어 있음을 알았습니다. 10.14.5 머신 중 하나를 설치하고 실행했으며 제안한대로 추가 구성 요소를 설치했는데 /usr/include그대로 남아 있습니다.

같은 날, 명령 줄 유틸리티 패키지 IIRC (자동 다운로드 및 설치)와 함께 macOS Mojave 10.14.6도 사용할 수 있음을 발견했습니다 (시스템 환경 설정 ⟶ 소프트웨어 업데이트). o / s 업데이트를 설치하면을 한 번 더 지 웠지만 답변 맨 위에 /usr/include있는 open명령이 다시 복원되었습니다. 내가 open명령에 파일에 있던 날짜 는 2019-07-15입니다.

XCode 11.0으로 업그레이드 (Catalina 10.15 용)

XCode 11.0으로의 업그레이드 ( “iOS 13, tvOS 13, watchOS 6 및 macOS Catalina 10.15 용 Swift 5.1 및 SDK 포함”)가 2019-09-21에 릴리스되었습니다. ‘사용 가능한 업데이트’에 대한 알림을 받고 App Store 앱 (업데이트 탭)을 통해 macOS Mojave 10.14.6을 실행하는 컴퓨터에 문제없이 다운로드하고 설치했습니다 /usr/include. 설치 직후 (응용 프로그램 자체를 실행하기 전에) 다시 컴파일을 시도하고 다음과 같이 들었습니다.

Xcode / iOS 라이센스에 동의하려면 관리자 권한이 필요합니다.“sudo xcodebuild -license”를 실행 한 다음이 명령을 다시 시도하십시오.

그 ( sudo xcodebuild -license)를 실행하면 컴파일러를 실행할 수있었습니다. 그 이후로 필요한 추가 구성 요소를 설치하기 위해 응용 프로그램을 실행했습니다. 여전히 문제 없습니다. Catalina 자체로 업그레이드 할 때 어떤 일이 발생하는지 알 수 있습니다. 그러나 현재 macOS Mojave 10.14.6 시스템은 모두 정상입니다 (2019-09-24).


답변

여기와 온라인에서 찾을 수있는 모든 답변을 시도한 후에도 누락 된 헤더에 대해 오류가 발생했습니다. pyRFR을 컴파일하려고 할 때 다른 헤더와 함께 stdexcept설치되지 않은 오류를 발견했습니다 /usr/include. 그러나 Mojave에서 어디에 숨어 있는지 발견하고 이것을 ~/.bash_profile파일 끝에 추가했습니다 .

export CPATH=/Library/Developer/CommandLineTools/usr/include/c++/v1

이제 pyRFR 및 기타 C / C ++ 프로그램을 컴파일 할 수 있습니다. 에 따르면 echo | gcc -E -Wp,-v -gcc는 헤더가없는 이전 위치를 찾고 /c++/v1있지만 새 위치는 찾지 않았으므로 CFLAGS에 추가하면 문제가 해결되었습니다.


답변

때를

  • 로 업데이트 Mojave 10.14.6
  • 당신 /usr/include은 다시 삭제되었습니다
  • 패키지가 조나단-lefflers의 @에서 언급 대답은 더 이상 존재하지 않는
    The file /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg does not exist.
  • Xcode는 명령 줄 도구가 이미 설치되어 있다고 불평합니다.
    xcode-select --install
    xcode-select: error: command line tools are already installed, use "Software Update" to install updates

그런 다음 언급 한 패키지를 복구하는 데 도움이 된 것은 전체 CommandLineTools폴더를
삭제 (sudo) rm -rf /Library/Developer/CommandLineTools하고 다시 설치하는 것이 었습니다 xcode-select --install.


답변

문제는 Xcode, 특히 Xcode 10.x가 모든 것을 설치하지 않았기 때문에 명령 줄 도구가 설치되어 있는지 확인하고 터미널 셸에 다음을 입력하십시오.

xcode-select –install

또한 Xcode를 시작하고 필요한 모든 설치가 설치되어 있는지 확인하십시오 (그렇지 않은 경우 프롬프트가 표시되어야 함). Xcode 10은 전체 Mac OS SDK를 설치하지 않으므로 설치 프로그램을 실행하십시오.

/ 라이브러리 / 개발자 / CommandLineTools / 패키지 /macOS_SDK_headers_for_macOS_10.14.pkg

이 패키지는 Xcode 10에 의해 설치되지 않기 때문입니다.


답변

GitHub 주석 에서 훌륭한 솔루션과 설명을 찾았습니다 . 트릭 :

make SDKROOT=`xcrun --show-sdk-path` MACOSX_DEPLOYMENT_TARGET=

일을 했어.


답변

참고 : 다음은 macos Catalina 10.15의 스위치 / 일반 가용성 이전에 상황에 따라 상당히 제한적일 수 있습니다. 새로운 노트북. 2019 년 10 월 1 일에 작성 중입니다.

이 특정 상황은 내가 빌드 문제를 일으킨 원인이라고 생각합니다. 대부분의 다른 경우에는 적용되지 않을 수 있습니다.

문맥:

  • macos 10.14.6 macja Catalina 10.15 출시 직전의 Mojave, Xcode 11.0 . 새로 구입 한 Macbook Pro.

  • pip install psycopg2기본적으로 소스에서 컴파일되는 Python 패키지 인 on on failure .

  • 나는 이미 여기에 주어진 답변에서 여러 가지 제안 된 조정을 수행했습니다.

내 오류 :

pip install psycopg2
Collecting psycopg2
  Using cached https://files.pythonhosted.org/packages/5c/1c/6997288da181277a0c29bc39a5f9143ff20b8c99f2a7d059cfb55163e165/psycopg2-2.8.3.tar.gz
Installing collected packages: psycopg2
  Running setup.py install for psycopg2 ... error
    ERROR: Command errored out with exit status 1:
     command: xxxx/venv/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/bk/_1cwm6dj3h1c0ptrhvr2v7dc0000gs/T/pip-install-z0qca56g/psycopg2/setup.py'"'"'; __file__='"'"'/private/var/folders/bk/_1cwm6dj3h1c0ptrhvr2v7dc0000gs/T/pip-install-z0qca56g/psycopg2/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/bk/_1cwm6dj3h1c0ptrhvr2v7dc0000gs/T/pip-record-ef126d8d/install-record.txt --single-version-externally-managed --compile --install-headers xxx/venv/include/site/python3.6/psycopg2


...
/usr/bin/clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -pipe -Os -isysroot/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -DPSYCOPG_VERSION=2.8.3 (dt dec pq3 ext lo64) -DPG_VERSION_NUM=90615 -DHAVE_LO64=1 -I/Users/jluc/kds2/py2/venv/include -I/opt/local/Library/Frameworks/Python.framework/Versions/3.6/include/python3.6m -I. -I/opt/local/include/postgresql96 -I/opt/local/include/postgresql96/server -c psycopg/psycopgmodule.c -o build/temp.macosx-10.14-x86_64-3.6/psycopg/psycopgmodule.o

    clang: warning: no such sysroot directory:
'/Applications/Xcode.app/Contents/Developer/Platforms
                              ❌?the real error?❌
/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk' [-Wmissing-sysroot]
    In file included from psycopg/psycopgmodule.c:27:
    In file included from ./psycopg/psycopg.h:34:
    /opt/local/Library/Frameworks/Python.framework/Versions/3.6/include/python3.6m/Python.h:25:10: fatal error: 'stdio.h' file not found
                             ❌? what I thought was the error ?❌
    #include <stdio.h>
             ^~~~~~~~~
    1 error generated.

    It appears you are missing some prerequisite to build the package

아무것도 고치지 않고 지금까지 한 일 :

  • xcode-select --install
  • 설치된 xcode
  • open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

stdio.h에서 여전히 동일한 오류입니다.

여러 장소에 존재합니다.

(venv) jluc@bemyerp$ mdfind -name stdio.h
/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/sys/stdio.h
/usr/include/_stdio.h
/usr/include/secure/_stdio.h
/usr/include/stdio.h   ? I believe this is the one that's usually missing.
                            but I have it.
/usr/include/sys/stdio.h
/usr/include/xlocale/_stdio.h

따라서 첫 번째 디렉토리 clang가 불평하고있는 것으로 이동하여 살펴보십시오.

(venv) jluc@gotchas$ cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
(venv) jluc@SDKs$ ls -l
total 0
drwxr-xr-x  8 root  wheel  256 Aug 29 23:47 MacOSX.sdk
drwxr-xr-x  4 root  wheel  128 Aug 29 23:47 DriverKit19.0.sdk
drwxr-xr-x  6 root  wheel  192 Sep 11 04:47 ..
lrwxr-xr-x  1 root  wheel   10 Oct  1 13:28 MacOSX10.15.sdk -> MacOSX.sdk  ?
drwxr-xr-x  5 root  wheel  160 Oct  1 13:34 .

헉, 우리는 대한 심볼릭 링크가 MacOSX10.15.sdk 에 대한,하지만 아무도 MacOSX10.14.sdk을 . 첫 번째 clang오류는 다음과 같습니다 .

clang: warning: no such sysroot directory: '/Applications/Xcode.app/.../Developer/SDKs/MacOSX10.14.sdk' [-Wmissing-sysroot]

내 생각에 애플은 xcode 설정에서 총을 뛰어 넘었고 이미 Catalina에 있다고 생각하고 있습니다. 새로운 Mac이므로 10.14의 이전 구성은 적용되지 않습니다.

수정 :

10.14와 10.15와 같은 방식으로 symlink를합시다 :

ln -s MacOSX.sdk/ MacOSX10.14.sdk

btw, 해당 SDK 디렉토리로 이동하면 다음을 찾습니다.

...
./usr/include/sys/stdio.h
./usr/include/stdio.h
....

결과:

pip install psycopg2 공장.

참고 : 실제 pip install 명령은 MacOSX10.14.sdk를 참조하지 않았으며 , 이는 나중에 OS 버전을 검사하는 Python 설치 메커니즘에 의해 제공됩니다.


답변

Xcode 환경 설정-> 위치를 확인하십시오.

내가 선택한 명령 줄 도구는 이전 버전의 Xcode 용입니다 (10.1 대신 8.2.1).