Piszę bibliotekę w Go. Mam zamiar go rozprowadzić z głównym wymaganiem "bez kodów źródłowych".Używanie pakietów binarnych bezpośrednio
Do testowania Utworzono dwie przestrzenie robocze, takie jak następujące,
ws1
- bin/
- PKG/linux_amd64/lib.a
- src/lib/src.go
WS2
- bin/
- pkg/
- src/main/main.go
Mój pierwszy roboczy (WS1) jest rzeczywista manekin biblioteka, która ma kilka funkcji użytkowych. Drugi obszar roboczy (WS2) ma główną funkcję, która korzysta z pakietu (lib.a) z WS1.
Wszystko działało dobrze, dopóki nie usunę źródła z WS1. Jeśli usunąć /lib/src.go katalogu w WS1, otrzymuję następujący błąd podczas kompilacji odchodzenia,
main.go: 5: 2: nie można odnaleźć pakiet „lib” w żadnej z: /usr/local/gO/src/pkg/lib (od $ GOROOT) ../Testing/ws1/src/lib (z $ GOPATH)
powyższy komunikat wskazuje nam, że powinniśmy zachować źródło również pliki. Samych skompilowanych pakietów binarnych nie można używać bezpośrednio.
Bazując na kilku sugestiach w Internecie, możemy zachować niektóre fałszywe źródła o wartości znacznika czasu mniejszej niż znaczniki czasu pakietów binarnych. Ale to nie wydaje się być wykonalnym rozwiązaniem dla nas. Co się stanie, jeśli niestety zaktualizowany zostanie znacznik czasowy fałszywych źródeł?
Widziałem podobny problem omawiany tutaj, https://github.com/golang/go/issues/2775
moje pytania:
dystrybucją źródeł nie jest jedyną możliwością w Golang?
Dlaczego usługa Go nie zapewnia rezerwy na bezpośrednie korzystanie z plików ".a"?
Jeśli przechowywanie źródła jest obowiązkowe dla Go, dlaczego ta mała rzecz to , której nie wymieniono nigdzie w Go? (lub) Czy coś tu brakuje?
Z góry dziękuję za pomoc!
Dzięki Volker! Teraz rozumiem problem tutaj. Powód, dla którego naciskałem na "budowanie go", większość deweloperów i tak używa tego narzędzia do swoich projektów. –
Heads up: ta sztuczka nie działa już od wersji 1.5, zobacz [ten problem z GitHubem] (https://github.com/golang/go/issues/12186). – tsuna