В настоящее время мы создаем наши исполняемые файлы Go для нескольких платформ, включая Solaris 64-bit.У нас также есть запросы на 32-разрядную исполняемую версию Solaris, и я не могу заставить ее работать (человек, который установил 64-разрядный кросс-компилятор Solaris, ушел и недоступен).
Я пытался просто настроитьФлаг -m32 на идет сборка с использованием существующей кросс-компиляции Solaris, но это не сработало, поэтому я пытаюсь создать 32-разрядный кросс-компилятор Solaris.
Я гуглил и нашел несколько расплывчатых примеров, поэтому я слежу за этим процессом:
- Копирование заголовков и библиотек с 32-разрядной машины Solaris на мою машину для сборки Linux.
- D / L и сборка binutils и gcc, указывающих SYSROOT на загруженные 32-разрядные заголовки и библиотеки Solaris, где:
$ TARGET = sparc-sun-solaris2.10
$ SYSROOT = / path / to / solaris32 / включает в себя
$ PREFIX = / path / to / gcc-output
binutils-2.31/configure -target=$TARGET --prefix=$PREFIX -with-sysroot=$SYSROOT -v
gcc-8.2.0/configure --target=$TARGET --with-gnu-as --with-gnu-ld --prefix=$PREFIX -with-sysroot=$SYSROOT --disable-libgcj --enable-languages=c,c++,go -v
Создайте символическую ссылку на gogcc и поместите GCC в путь
Скомпилируйте тривиальную программу go-теста следующим образом:
go build --compiler gccgo --gccgoflags "-m32 -O3 -static-libgo -Wl,-dy -lnsl -lsocket -lrt -lsendfile" -o ${GOTOOLS}/${BINARIES}/${PROJECT_NAME}/test/solaris_sparc32 test/main.go
Это происходит следующим образом:
go build: при использовании gccgo toolchain передавайте флаги компилятора, используя -gccgoflags, а не -gcflags
аргументы командной строки
gccgo: error: нельзя использовать -m32 и -m64
Очевидно, я не знаю, что делаю.Кто-нибудь может указать мне правильное направление?