Cgo를 사용하여 Go에서 C 라이브러리를 정적으로 연결하는 방법
Go 커뮤니티 내에서는 C 라이브러리를 정적으로 연결하는 방법에 대한 수많은 논의가 있습니다. Cgo를 사용하는 Go의 라이브러리. 그러나 이 프로세스는 Cgo 설명서에 사용된 구문과 다르다는 점에 유의하는 것이 중요합니다.
C 라이브러리를 정적으로 연결하려면 다음 단계를 따르세요.
1단계: 수정 Cgo 지시문
Go 코드에 다음 Cgo를 포함하세요. 지시어:
// #cgo CFLAGS: -I/path/to/c/include // #cgo LDFLAGS: /path/to/c/build/libgb.a
"/path/to/c/include"를 C 헤더 파일의 경로로 바꾸고 "/path/to/c/build/libgb.a"를 정적으로 링크된 C 라이브러리.
2단계: 컴파일 및 링크
컴파일 및 링크 다음 명령을 사용하여 Go 프로그램을 실행하세요.
CGO_ENABLED=0 go build -a -installsuffix cgo -ldflags '-s'
링크된 바이너리에서 기호를 제거하므로 "ldflags" 인수에 "-s"가 포함되어 있는지 확인하세요.
"정의되지 않음"과 같은 오류가 발생하면 해당 기호가 C 라이브러리에 있는지 확인하세요.
참고: Go를 사용하는 경우 1.0에서는 정적 링크가 지원되지 않습니다. 이 기능이 제대로 작동하려면 Go 1.1 이상으로 업데이트하세요.
위 내용은 cgo를 사용하여 Go에서 C 라이브러리를 정적으로 연결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!