Go Build удалить информацию

Я уже могу использовать Go Build, чтобы удалить текущую информацию о каталоге проекта, или я могу удалить информацию Gopath, как показано ниже, теперь я могу удалить только одну из них отдельно

go build -gcflags "all=-trimpath=${GOPATH}" -asmflags "all=-trimpath=${GOPATH}"

Но я не знаю, как их убрать одновременно, я не знаю, как это совместить

на окнах, я пробую это

go build -gcflags "all=-trimpath=%CD%" -asmflags "all=-trimpath=%CD%" -gcflags "all=-trimpath=%GOPATH%" -asmflags "all=-trimpath=%GOPATH%"

Это не работает

Окончательные результаты

@ZekeLu, ответ правильный.

Я хочу объяснить, что произошло, я ожидал удалить информацию GOROOT, но я написал GOPATH, поэтому я подумал, что второй ответ @ZekeLu был неправильным, теперь я изменил и протестировал, проблем нет, два ответа все в порядке

Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
1
0
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте эту команду:

go build -trimpath

Вот документ для флага -trimpath для команды Go:

-тримпат

удалить все пути файловой системы из полученного исполняемого файла. Вместо абсолютных путей файловой системы записанные имена файлов будет начинаться либо с пути к модулю@версия (при использовании модулей), или простой путь импорта (при использовании стандартной библиотеки или GOPATH).

Если вы хотите удалить только некоторые префиксы, вы можете сделать это следующим образом:

go build -gcflags "all=-trimpath=%CD%;%GOPATH%" -asmflags "all=-trimpath=%CD%;%GOPATH%"

И команда Compile , и команда Asm вызывает objabi.ApplyRewrites для обрезки путей. В соответствии с реализацией objabi.ApplyRewrites, аргумент rewrites представляет собой список перезаписи, разделенный ;.

// ApplyRewrites returns the filename for file in the given directory,
// as rewritten by the rewrites argument.
//
// The rewrites argument is a ;-separated list of rewrites.
// Each rewrite is of the form "prefix" or "prefix=>replace",
// where prefix must match a leading sequence of path elements
// and is either removed entirely or replaced by the replacement.
func ApplyRewrites(file, rewrites string) (string, bool) {
    start := 0
    for i := 0; i <= len(rewrites); i++ {
        if i == len(rewrites) || rewrites[i] == ';' {
            if new, ok := applyRewrite(file, rewrites[start:i]); ok {
                return new, true
            }
            start = i + 1
        }
    }

    return file, false
}

спасибо, я стараюсь go build -trimpath main.go, это работает. Но второй все равно не работает

zhang peter 03.07.2023 07:56

@zhangpeter Что касается второго вопроса, можете ли вы отредактировать свой вопрос, включив в него демонстрацию и показав, как вы проверяете, работает она или нет?

Zeke Lu 03.07.2023 08:04

Я отредактировал вопрос, я ошибся, что нужно удалить, так это информацию GOROOT

zhang peter 03.07.2023 08:58

Другие вопросы по теме