Я учусь программировать на языке Go Google, у меня есть скрипт:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
Поэтому я скомпилировал это с:
go build /home/user/HelloWorld.go
Я заметил, что могу запустить скомпилированный результат без выполнения:
chmod +x /home/user/HelloWorld
Почему это?
go
компилятор делает + х для вас?Ответы:
Помните, что команда build вызывает несколько частей цепочки инструментов go с неявной целью создания исполняемого файла . Вы можете попросить go выполнить только компиляцию, скажем, или ссылку, взяв каждый инструмент по очереди, и это будет только последний шаг в цепочке инструментов сборки, который фактически устанавливает исполняемый бит.
Это не совсем то, что нужно. Это то, что делают цепочки инструментов компилятора. Следует иметь в виду, что сценарий оболочки не является скомпилированным исполняемым файлом: поэтому вам нужно установить исполняемый бит так, чтобы, когда ядро прочитало первую строку, оно знало, чтобы вызвать оболочку и передать ей тело сценария.
источник