문제 설명:
기본 Go 구축 Oracle 데이터베이스와의 스니펫 인터페이스가 실패합니다. 명령:
CGO_ENABLED=1 go build -work -x -ldflags "-v -linkmode external -extldflags -static" ${MAIN_SRC}
컴파일 오류는 Oracle 라이브러리 -lclntsh를 찾을 수 없음을 나타냅니다. 환경 변수를 설정하고 Oracle 데이터베이스 패키지에서 추가 파일을 설치하려는 시도에도 불구하고 정적 컴파일이 여전히 실패합니다.
해결책:
정적 라이브러리 생성:
Oracle은 일반적으로 정적 라이브러리와 함께 제공되지 않습니다. libclntst.a. 이를 생성하려면 다음 명령을 실행하십시오.
$ORACLE_HOME/bin/genclntst
애플리케이션 연결:
애플리케이션을 생성된 정적 라이브러리와 연결:
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}
핸들 누락 기호(선택 사항):
여전히 누락된 기호가 있는 경우 nm 도구를 사용하여 식별합니다. 그런 다음 필요에 따라 추가 정적 라이브러리를 추가하여 종속성을 해결합니다.
추가 참고 사항:
위 내용은 Go CGO 실행 파일을 Linux의 Oracle 라이브러리와 정적으로 연결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!