Вопрос наверное странный, но вот прижало мне)
Вот есть команда go build main.go
К примеру проект состоит из многих, практически одинаковых, бинарников
Разница лишь в порту, который постоянно приходится в ручную инкреминтировать.
Есть ли способ какого то цикла для сборки бинарников, что бы он мне сам собрал.. ну скажем 20 бинарников с портом 4001++ ?
Что бы 20-ый бинарник получился с портом 4020
Ну и соответственно что-то с именами самих бинарников подобное. Иначе он каждый предыдущий у меня затирает следующим, так как имя делает одинаковое.
Можно ли передавать желаемое имя файла на выходе?
Выслушаю любые предложения, которые хоть как-то облегчат сие действие.
Другие языки программирования и технологии
golang Можно ли собрать несколько бинарников за раз?
Небольшой пример. Создадим файл hello.go с таким содержимым:
package main
import "fmt"
var hello = "Hello"
var world = "World"
func main() {
fmt.Printf("%s, %s!\n", hello, world)
}
============================================
При обычном запуске, например, с помощью команды go run hello.go, мы получим строку «Hello, World!»:
$ go run hello.go
Hello, World!
А теперь добавим вызов линкера с флагами -X и новыми значениями переменных:
$ go run -ldflags="-X main.hello=Привет -X main.world=Мир" hello.go
Привет, Мир!
Подменять можно не только переменные из пакета main, но и переменные из любых пакетов вообще. Таким образом, во время сборки приложения можно зашить в него любую необходимую метаинформацию.
Как скомпилировать программу Go, состоящую из нескольких файлов?
htt__://qaru.site/questions/83177/how-to-compile-go-program-consisting-of-multiple-files
package main
import "fmt"
var hello = "Hello"
var world = "World"
func main() {
fmt.Printf("%s, %s!\n", hello, world)
}
============================================
При обычном запуске, например, с помощью команды go run hello.go, мы получим строку «Hello, World!»:
$ go run hello.go
Hello, World!
А теперь добавим вызов линкера с флагами -X и новыми значениями переменных:
$ go run -ldflags="-X main.hello=Привет -X main.world=Мир" hello.go
Привет, Мир!
Подменять можно не только переменные из пакета main, но и переменные из любых пакетов вообще. Таким образом, во время сборки приложения можно зашить в него любую необходимую метаинформацию.
Как скомпилировать программу Go, состоящую из нескольких файлов?
htt__://qaru.site/questions/83177/how-to-compile-go-program-consisting-of-multiple-files
к вышесказанному добавлю лишь веселую команду man от слова мануал. пишем в терминале man go build,видим такую шнягу:
NAME
go - tool for managing Go source code
SYNOPSIS
go build [-o output] [ build flags ] [ packages ]
....
The -o flag specifies the output file name. If not specified, the name
is packagename.a (for a non-main package) or the base name of the first
source file (for a main package).
в переводе означает что если напишешь go build -o igogoport4020 main.go то go тебе соберет твой main.go в файл igogoport4020 . это ответ в лоб
но вообще все это порнушкой пахнет, почему бы не сделать прогу, которая бы принимала порт в качестве параметра? такую чтоб один раз написал go build -o igogo main.go, а потом мог вызвать её хоть ./igogo 4001 хоть ./igogo 123456 ?
NAME
go - tool for managing Go source code
SYNOPSIS
go build [-o output] [ build flags ] [ packages ]
....
The -o flag specifies the output file name. If not specified, the name
is packagename.a (for a non-main package) or the base name of the first
source file (for a main package).
в переводе означает что если напишешь go build -o igogoport4020 main.go то go тебе соберет твой main.go в файл igogoport4020 . это ответ в лоб
но вообще все это порнушкой пахнет, почему бы не сделать прогу, которая бы принимала порт в качестве параметра? такую чтоб один раз написал go build -o igogo main.go, а потом мог вызвать её хоть ./igogo 4001 хоть ./igogo 123456 ?
Похожие вопросы
- Скажите какой язык для бэкенда сейчас перспективнее учить на ближайший год Golang или Python?
- Перспективен ли golang?
- План изучения Golang
- Знатокам фотошопа. Как правильно собрать фотошопом файлы в документ .pdf
- Как собрать Windows?
- Как уговорить родителей купить (собрать) новый компьютер?
- Если бы была возможность собрать супер компьютер . Из каких комплектующих собрали?
- На каком уровне вы знаете несколько язык программирования??? Именно несколько.
- как задать несколько условий в delphi?
- Подскажите как правильно сделать структуру БД? Говорят нужно несколько таблиц, а зачем?
for i in `seq -w 1 1 3`; do go build -o file-$i -ldflags "-X main.argPort=400$i"; done
Таким образом запуститься цикл. Не все могу тут расшифровать) но 1 1 3 говорит о том, что начнется инкриментируемая переменная с 1 и цикл остановится когда она будет ровна 3 (включительно). Потом собственно сама команда build. Далее, как подсказали ниже -o имя желаемого на выходе файла с добавление $i (file-1, file-2, file-3)
Далее передача аргумента в пакет main. После точки имя перменно. В моем случае это порт, который так же будет постоянно инкрементиться. Ну тут еще не учитанно то, что начиная с 10 порт будет не 4010,