Ошибка компоновщика от g++ при компиляции в стандартный вывод

Поскольку вы отметили свой вопрос как Manjaro и rxvt, я предполагаю, что вы используете эмулятор терминала rxvt -unicode . В этом случае вы можете использовать:

bindsym $mod+F1 exec --no-startup-id urxvt -e nvim

Даже если вы используете другой терминал, в большинстве эмуляторов есть аналогичная опция для выполнения команды при запуске.

0
13.10.2021, 20:54
1 ответ

Как упоминалось в комментариях, это связано с тем, что компоновщик записывает файл поэтапно, а затем заполняет записи в области заголовка размерами и смещениями. Формат ELF имеет эти значения в начале файла, чтобы сделать поиск нужных разделов простым и эффективным, и, как результат, для компоновщика естественно работать так, как он это делает. Форматы, предназначенные для потоковой передачи, такие как Zip-файлы, как правило, имеют гораздо большую сложность из-за размещения данных манифеста в конце.

Хотя теоретически возможно реализовать поддержку потокового вывода, для этого, вероятно, потребуется буферизация больших объемов данных, двойное вычисление данных или различные другие неэффективные методы, и поскольку этот сценарий настолько редок, он, вероятно, не считался целесообразным. сложность кода и потенциальная неэффективность компоновщика. Вероятно, вы могли бы использовать небольшой сценарий оболочки или даже лайнер оболочки one -, чтобы реализовать это с помощью временного файла с соответствующей очисткой.

2
14.10.2021, 01:37

Теги

Похожие вопросы