>백엔드 개발 >Golang >cgo로 컴파일할 수 없습니다

cgo로 컴파일할 수 없습니다

WBOY
WBOY앞으로
2024-02-09 16:21:091256검색

cgo로 컴파일할 수 없습니다

php 편집기 Baicao는 코드를 작성할 때 종종 몇 가지 문제와 어려움에 직면합니다. 일반적인 문제 중 하나는 cgo로 컴파일할 때 "Cannot compile with cgo"라는 오류 메시지가 나타나는 것입니다. 이 문제는 종속 라이브러리 누락, 잘못된 환경 구성 등 다양한 이유로 인해 발생할 수 있습니다. 이 문제를 해결하려면 코드와 환경을 주의 깊게 검사하고 특정 상황에 따라 적절하게 조정하고 수정해야 합니다. 이 글에서는 모든 사람이 이 문제를 극복할 수 있도록 이 문제를 해결하는 몇 가지 방법과 기법을 공유하겠습니다.

질문내용

어떤 고버전(go version)을 사용하고 계시나요?

으아악

프로젝트 구조:

으아악

main.go

으아악

lib/lib.c

으아악

lib/lib.h

으아악

컴파일하는 동안 오류가 발생했습니다

으아악

코드가 성공적으로 컴파일될 것으로 예상했는데 왠지 그렇지 않았습니다. 설명서를 올바르게 읽으려면 lib.clib.hmain.go

파일을 동일한 디렉터리에 저장해야 합니다. 그러나 이것이 가능한지 아니면 내가 뭔가 잘못하고 있는지 잘 모르겠습니다.
  • 예제와 같은 디렉터리에 모든 파일을 저장하면 컴파일이 성공한 것입니다.
  • lib.clib.h하위 디렉터리에

    를 보관하면 컴파일이 실패합니다
  • f32_123 ,那么编译也会成功,这很奇怪,这就是打开此错误的原因,以更好地理解为什么在 lib.h 时编译不会出现 printc 函数问题并且 lib.c하위 디렉토리에 있는 main.go

    에서 기능을 제거하는 경우.

해결 방법

우선 @jimb이 얼마 전에 허용된 답변을 제공했습니다. a>https://www.php.cn/link/50c57f7019bb52cfbebdfe5bdc42b422go build는 하위 디렉터리에 객체나 라이브러리를 구축하는 것이

뭔가가 아니라는 뜻입니다. 일을 할 수 있습니다.

이를 고려하여 다음과 같은 구조가 있다고 가정해 보겠습니다.

으아악

다음은 명확하게 설명할 수 있는 몇 가지 간단한 파일입니다.

으아악 으아악 main.go ,则可以从 go build main.go그러므로 이와 같은

이 있다면 go build main.go에서 모든 것을 빌드할 수 있습니다.

으아악 #include 库的“c”源代码(隐式导入 lib/lib.h이것은 실제로 라이브러리의 "c" 소스 코드를 #include하기 때문에 작동합니다(암시적으로

파일 가져오기).

그러나 더 복잡한 라이브러리의 경우 별도의 보다 일반적인 C 툴체인, 사전 빌드 단계로 빌드해야 할 수도 있습니다.

으아악 main2.go그런 다음 다른 go 파일을 사용하세요.

: 🎜 으아악

위 내용은 cgo로 컴파일할 수 없습니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제