macOS의 cgo에서 상대 dylib 경로를 지정하는 방법

WBOY
풀어 주다: 2024-02-08 22:10:27
앞으로
737명이 탐색했습니다.

如何在 macOS 上的 cgo 中指定相对 dylib 路径

macOS에서 cgo를 사용하고 상대 dylib 경로를 지정하는 것은 일반적인 문제입니다. cgo는 Go 언어가 C 언어와 상호 작용하는 데 사용하는 도구인 반면, dylib는 macOS의 동적 링크 라이브러리입니다. 상대 경로를 지정하면 프로젝트가 더욱 유연해지고 이식 가능해집니다. 그렇다면 macOS의 cgo에서 상대 dylib 경로를 어떻게 지정해야 할까요? PHP 에디터 스트로베리가 자세히 답변해드리겠습니다.

질문 내용

현재 C로 작성된 기존 dylib를 go in으로 만들려고 합니다. 이를 위해 cgo를 사용하고 모든 것이 올바르게 컴파일됩니다. go 빌드가 생성된 실행 파일 dyld 를 실행하려고 하면 go 소스 디렉터리에 있는 dylib를 찾을 수 없습니다.

나는 이 cflags와 ldflags를 성공적으로 사용하고 있습니다:

으아악

또한 매직 문자열 @executable_path을 사용하여 상대 라이브러리 검색 경로를 지정할 수 있지만 이를 -l에 추가하거나 링커 플래그에 -install_name을 추가하려고 하면 결과가 나오지 않는다는 것도 배웠습니다.

제가 받은 링커 오류 메시지는 다음과 같습니다.

으아악

go 외부에서 빌드 단계를 추가하지 않는 동안, 나중에 바이너리가 있을 동일한 폴더에 있는 dylib를 사용하여 go 빌드로 실행할 수 있도록 cgo를 올바르게 구성하려면 어떻게 해야 합니까?

해결 방법

알고 보니 목표에 매우 가까웠는데 실제 라이브러리에 저장된 검색 경로가 잘못되었습니다.

내 질문에 있는 코드는 다음과 같이 라이브러리를 수정한 후 제대로 작동합니다.

으아악

goland가 go 빌드를 제어하여 내 라이브러리를 실행 중인 애플리케이션의 출력 디렉터리에 복사하도록 하는 깔끔한 방법을 찾지 못했지만, 출력 디렉터리를 절대 경로로 설정하고 Pre를 추가하여 잠정적으로 종속성을 출력에 복사했습니다. -폴더에 대한 실행 명령.

위 내용은 macOS의 cgo에서 상대 dylib 경로를 지정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!