> 백엔드 개발 > Golang > Go CGO 실행 파일을 Linux의 Oracle 라이브러리와 정적으로 연결하는 방법은 무엇입니까?

Go CGO 실행 파일을 Linux의 Oracle 라이브러리와 정적으로 연결하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-25 10:50:11
원래의
320명이 탐색했습니다.

How to Statically Link a Go CGO Executable with Oracle Libraries on Linux?

Linux의 Oracle 라이브러리와 Go CGO 실행 파일의 정적 실행 연결

문제 설명:

기본 Go 구축 Oracle 데이터베이스와의 스니펫 인터페이스가 실패합니다. 명령:

CGO_ENABLED=1 go build -work -x -ldflags "-v -linkmode external -extldflags -static"  ${MAIN_SRC}
로그인 후 복사

컴파일 오류는 Oracle 라이브러리 -lclntsh를 찾을 수 없음을 나타냅니다. 환경 변수를 설정하고 Oracle 데이터베이스 패키지에서 추가 파일을 설치하려는 시도에도 불구하고 정적 컴파일이 여전히 실패합니다.

해결책:

  1. 정적 라이브러리 생성:

    Oracle은 일반적으로 정적 라이브러리와 함께 제공되지 않습니다. libclntst.a. 이를 생성하려면 다음 명령을 실행하십시오.

    $ORACLE_HOME/bin/genclntst
    로그인 후 복사
  2. 애플리케이션 연결:

    애플리케이션을 생성된 정적 라이브러리와 연결:

    CGO_ENABLED=1 go build -work -x -ldflags "-v -linkmode external -extldflags -static -L/usr/lib/oracle/12.1/client64/lib -lclntsh -lclntst"  ${MAIN_SRC}
    로그인 후 복사
  3. 핸들 누락 기호(선택 사항):

    여전히 누락된 기호가 있는 경우 nm 도구를 사용하여 식별합니다. 그런 다음 필요에 따라 추가 정적 라이브러리를 추가하여 종속성을 해결합니다.

추가 참고 사항:

  • Oracle의 링커 유틸리티를 사용하면 종속성을 분석하는 데 도움이 됩니다.
  • Oracle 버전 및 컴파일러에 따라 추가 링크가 필요할 수 있습니다. ICC 런타임 정적 라이브러리.
  • 정적 연결을 위해서는 모든 종속성을 수동으로 해결해야 하며 이는 복잡할 수 있습니다.

위 내용은 Go CGO 실행 파일을 Linux의 Oracle 라이브러리와 정적으로 연결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿