답변
이 가능하다 : (! 코드는 모든 일반적인 패키지가 공유하게 위)
go install -buildmode=shared -linkshared std
을 다음
go install -buildmode=shared -linkshared userownpackage
마지막으로 코드를 컴파일 할 때 다음을 실행해야합니다.
go build -linkshared yourprogram
위의 내용은 정적으로 모든 것을 동적으로 연결하는 것이 아니라 훨씬 더 작은 컴파일 된 파일로 끝낼 것입니다. 정적 링크를 사용하는 "hello.go"파일은 2.3MB이고 동적 링크를 사용하는 동일한 코드는 12KB입니다.
분명히 이제는 가능하지만 매우 정확한 상황에서만 가능합니다. 더 정확히 말하자면 Android 플랫폼 용으로 작성하는 경우입니다.
GitHub의 "goandroid"프로젝트는 Go가 Android NDK와 특정 용도로 공유 라이브러리를 빌드 할 수있게 해주는 패치 세트를 제공합니다. 공유 라이브러리로 구축 될 수
"이 모드에서 이동 패키지 또는 패키지 세트 하나를 가져 갈 프로그램 : 공유 라이브러리로 건물로 이동 패키지를 설명 https://github.com/eliasnaur/goandroid
현재 (2013 년 7 월) 현재는 Go Tools의 확장이며 Google이 제공하는 Go 도구에는 포함되어 있지 않습니다. – Nate
@ 네이트 확장 기능에 연결할 수 있습니까? 안드로이드에서만 (독립 실행 형) 확장 기능을 사용할 수 있습니까, 아니면 데스크톱에서도 사용할 수 있습니까? –
@mihaistancu 안드로이드로 크로스 컴파일하기가 너무 어렵지 않다고 생각합니다. [here] (https://jasonplayne.com/programming-2/how-to-cross-compile-golang-for-android). golang 1.5가 iOS를 지원한다는 것을 고려하면 곧 공식적인 지원을받을 수 있습니다. – Nate
Go Execution Modes 참조하십시오. 이러한 Go 패키지는이 공유 라이브러리와 연결될 수 있습니다. 공유 라이브러리는 Go 프로그램이 링크되는 시간과 실행되는 시간 사이에 변경 될 수 있으며, 프로그램 시작시 사용할 수있는 공유 라이브러리가됩니다 used ...
Go 1.5 릴리스에서는 linux-amd64 대상에 대해서만 구현됩니다. gccgo를 사용하여 지원되는 모든 대상에 대해 구현됩니다. " 지금 당신이 처음이 명령을 실행하는 것입니다 필요가있는 무엇 -linkshared 플래그
사용
나는이 질문으로 돌아와 업데이트를 작성했다. +1 –
사용 가능! Go를 사용하여 .so 파일을 만든 다음 Python으로 쉽게 가져올 수 있습니다! 내가 좋아하는 기사는 다음과 같습니다. http://www.darkcoding.net/software/building-shared-libraries-in-go-part-1/
- 1. JUNG : 어떤 라이브러리가 필요합니까?
- 2. 정적으로 링크하려면 정적 라이브러리가 필요합니까?
- 3. 어떤 용도로 어떤 XML 라이브러리가 필요합니까?
- 4. SqlServerCe는 간단한 가정용 사용자를위한 추가 라이브러리가 필요합니까?
- 5. UIImage를 축소하려면 모든 코드/라이브러리가 필요합니까?
- 6. vim이나 nano와 같은 그래픽에는 어떤 라이브러리가 필요합니까?
- 7. 어떤 버전의 Visual C++ 런타임 라이브러리가 필요합니까?
- 8. 자바를 실행하려면 어떤 그래픽 라이브러리가 필요합니까?
- 9. 이 keygenerator 클래스를 실행하려면 어떤 라이브러리가 필요합니까?
- 10. x64 모노는 x64 클래스 라이브러리가 필요합니까?
- 11. 공유 라이브러리와 정적 라이브러리가 모두있는 공유 라이브러리를 만들 수 있습니까
- 12. 정적 빌드에 공유 라이브러리가 필요한 이유는 무엇입니까?
- 13. 공유 라이브러리가 필요한 미리 작성된 APK 추가
- 14. 이동 중에 변수를 지속시키는 방법이 있습니까?
- 15. 이동 중에 (일반) 벡터를 사용하려면 어떻게해야합니까?
- 16. 자동 완성 선택 중에 커서 이동 비활성화
- 17. 런타임 중에 공유 라이브러리 내에서 디버깅/추적?
- 18. 참조하는 앱에 Weblogic 10 공유 라이브러리가 표시되지 않습니다.
- 19. Java 애플릿을 안정적으로로드하는 데 필요한 Javascript 라이브러리가 필요합니까?
- 20. Facebook 응용 프로그램을 만들려면 Codeigniter 용 라이브러리가 필요합니까?
- 21. 행 번호를 제어 할 때 어떤 바이트 코드 라이브러리가 필요합니까?
- 22. java를 사용하여 서버 측 이미지 리샘플링을위한 라이브러리가 필요합니까?
- 23. Microsoft AntiXSS 라이브러리가 유용하며 서버 컨트롤을 사용하고 있다면 필요합니까?
- 24. 크로스 플랫폼 게임을 작성하려면 어떤 언어 또는 라이브러리가 필요합니까?
- 25. 새롭거나 떠오르는 프로그래밍 언어에는 실제로 실용적인 라이브러리가 필요합니까?
- 26. C++에서 되풀이 날짜에 대한 설명을 파싱하려면 라이브러리가 필요합니까?
- 27. 왜 libprofiler.so.0이 필요합니까?
- 28. 결과로 실행 파일에 공유 라이브러리가 필요 없도록 리눅스에서 컴파일하는 방법
- 29. 내 RPM 패키지에 이미 2 개의 공유 라이브러리가 설치되어 있어야합니다.
- 30. 공유 라이브러리가/시스템에 맞지 않아서 Android 앱이 충돌합니다.
정답입니다. – 0x90
이것이 내가 찾고있는 것입니다. 그러나'-buildmode = shared는 my mac에서 darwin/amd64에서 지원되지 않는다. '를 제공한다. – lvle