LINUX.ORG.RU

Как запаковать программу в один бинарник.

 


0

2

Есть у меня программа на Си, лежит в директории и запускается из нее же. Из Go обращаюсь к ней через exec.Command()

Соответственно, после компиляции проект выглядит так:

/project/ |-/cprog/ |--|cprog.exe |-goprogram.exe

Как запаковать все это в один исполняемый файл на го?

Есть у меня программа на Си, лежит в директории и запускается из нее же. Из Go обращаюсь к ней через exec.Command()

Тебе нужно не запускать её через exec, а использовать cgo.

Но лучше было бы просто переписать на Go.

/project/ |-/cprog/ |--|cprog.exe |-goprogram.exe

exe

Ты форумом не ошибся?

p.s. Но если очень хочется — никто не мешает вставить твою утилиту как массив байт, после чего в процессе исполнения дропать куда-нибудь в tmp или shm и запускать.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 2)
Ответ на: комментарий от Deleted

Тебе нужно не запускать её через exec, а использовать cgo.

Кажется cgo не подойдет, в этой программе отдельная солянка. Мне бы что-то такое, чтобы склеить всю эту фигню в какой-нибудь tar, запаковать его в переменную внутри го. А после запуска программы - оно бы куда-нибудь в память временно распаковывалось и оттуда выполнялось.

Ты форумом не ошибся?

exe - это сокращенно executable. А ты о чем подумал?

buggycoder
() автор топика
Ответ на: комментарий от anonymous

Всё, что нужно знать о человеке, собравшимся делать убивцу веба.

Анонимуса в ладошечники записывать смысла нету

buggycoder
() автор топика
Ответ на: комментарий от i-rinat

Можно memfd_create + fexecve.

Если старые ядра не нужны, то да.

Deleted
()
Ответ на: комментарий от burato

Почему? Go - реально кроссплатформенность, если аккуратно вкрапить оЗЬ специфик - то можно итак, и даже запросто! 🤟

anonymous
()
Ответ на: комментарий от anonymous

Ну ... так то да, но тогда это всё прямо в первом же ответе написано :)

anonymous
()

Создай переменную в коде, в которой будешь хранить свой файл как массив байтов или как строку в base64, а перед использованием единожды создавай временный исполняемый файл и обращайся к нему

nikolnik ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.