Попробуйте использовать одиночные кавычки ''
вместо двойных кавычек.
sed -i 's:.*$ModLoad imudp.*:$ModLoad imudp:g' file
Это предотвращает особый смысл $
для расширения переменных.
Edit: ( в соответствии с комментарием @ tripleee )
Также выйдите $
для сопоставления буквенного знака доллара
sed -i 's:.*\$ModLoad imudp.*:$ModLoad imudp:g' file
причина существуют оборотные стороны к использованию компрессоров EXE. Прежде всего:
После запуска сжатого EXE/DLL, весь код распаковывается от образа диска в память в одной передаче, которая может вызвать дисковую перегрузку, если система является низкой на памяти и вынуждена получить доступ к файлу подкачки. Напротив, с несжатым EXE/DLLs ОС выделяет память для кодовых страниц по требованию (т.е. когда они выполняются).
Несколько экземпляров сжатого EXE/DLL создают несколько экземпляров кода в памяти. Если у Вас есть сжатый EXE, который содержит 1 МБ кода (перед сжатием), и пользователь запускает 5 экземпляров его, приблизительно 4 МБ памяти потрачен впустую. Аналогично, если у Вас есть DLL, который составляет 1 МБ, и он используется 5 запущенными приложениями, приблизительно 4 МБ памяти потрачен впустую. С несжатым EXE/DLLs код только хранится в памяти однажды и совместно используется экземплярами.
Заключительный размер исполняемого файла на диске в основном не важен в эти дни. Ваша программа может загрузить несколько миллисекунд быстрее, но как только она начинает работать, различие неразличимо.
Некоторые люди могут больше с подозрением относиться к Вашему исполняемому файлу просто, потому что он сжат с UPX. В зависимости от Ваших конечных пользователей это может или не может быть важным соображением.
Единственные вопросы размера времени во время загрузки от Интернета. При использовании UPX тогда, Вы на самом деле ухудшаетесь производительность, чем если бы Вы используете с 7 zip (на основе моего тестирования, С 7 zip, вдвое более хорошо, чем UPX). Тогда, когда это на самом деле оставляют сжатым на целевом компьютере, Ваша производительность уменьшена (см. ответ Lars). Таким образом, UPX не является хорошим решением для размера файла. Просто 7zip все это.
До для предотвращения вмешательства это СБОЙ также. Поддержки UPX, распаковывающие также. Если кто-то захочет изменить EXE тогда, то они будут видеть, что это - сжатие с UPX, и затем распакуйте его. Процент возможных взломщиков, которых Вы могли бы замедлить, не выравнивает по ширине потеря производительности и усилие.
А лучшее решение состояло бы в том, чтобы использовать двоичное подписание или по крайней мере просто хеш. Простая система проверки хеша должна взять хеш Вашего двоичного файла и секретного значения (обычно гуид). Только Ваш EXE знает секретное значение, поэтому когда это повторно вычисляет хеш для проверки, это может использовать его снова. Это не прекрасно (секретное значение может быть получено). Идеальная ситуация должна была бы использовать сертификат и подпись.
Если Ваш единственный интерес находится в уменьшении размера исполняемых файлов, то Вы попытались сравнить размер исполняемого файла с и без пакетов во время выполнения? Предоставленный необходимо будет также включать размеры пакетов в целом наряду с исполняемым файлом, но если у Вас есть несколько исполняемых файлов, которые используют те же основные пакеты, тогда Ваши сбережения были бы довольно высоки.
Другой вещью посмотреть на была бы графика/глифы, которую Вы используете в своей программе. Можно оставить довольно мало свободного места путем консолидации их к единственному Timagelist, включенному в глобальный модуль данных, а не иметь их повторенный на каждой форме. Я полагаю, что каждое изображение хранится в ресурсе формы как шестнадцатеричное число, так, чтобы означал бы, что каждый байт поднимает два байта..., можно уменьшить это немного путем загрузки изображения из ресурса RCData с помощью TResourceStream.
Я полагаю, что существует возможность, что это не могло бы работать над компьютерами, которые имеют DEP (Предотвращение Выполнения Данных) включенный.
Я удивлен, что это еще не было упомянуто, но использование UPX-упакованных исполняемых файлов также увеличивает риск создания ложных положительных сторон от эвристического антивирусного программного обеспечения, потому что статистически много вредоносного программного обеспечения также использует UPX.
В прошлый раз, когда я пытался использовать его на управляемой сборке, это портило его настолько плохо, что время выполнения отказалось загружать его. Это - единственное время, я могу думать об этом, Вы не хотели бы использовать его (и, действительно, это было таким длинным, так как я попробовал это, что ситуация может даже быть лучше теперь). Я использовал его экстенсивно в прошлом на всех типах неуправляемых двоичных файлов, и никогда не имел проблему.
Существует три недостатка:
Таким образом вышеупомянутые недостатки являются большим количеством проблемы, если Ваш EXE или DLLs содержат много ресурсов, но иначе, они не могут быть большой частью фактора на практике, учитывая относительный размер исполняемых файлов и доступной памяти, если Вы не говорите о DLLs, используемом партиями исполняемых файлов (как система DLLs).
Для рассеивания некоторой неправильной информации в других ответах:
Многие люди, похоже, игнорируют первоначальный вопрос «Различия между разработкой под UNIX и Windows» и так Я немного расскажу об этом.
Что касается изучения C #:
Я думаю, что в какой-то момент вам нужно выучить такой язык, как C # [1]. Вопрос не в том, стоит ли вам это изучать, а в том, когда и когда вы будете это изучать.
Относительно альтернативных языков, подобных C #:
Java - другой язык, очень похожий на C #. Java IMO является отцом C #, и IMO я предпочитаю Java.
Я предлагаю вам метафору, объясняющую мое пристрастие к Java. У Явы был этот сын C #, который видел все успехи своего отца. Сын ревновал и пытался сделать то же, что делал его отец.
В этом случае MS - выскочка, пытающаяся отодвинуть на задний план старшего отца. Однако выскочка C # упускает пару ключевых моментов IMO:
В этом случае MS - выскочка, пытающаяся отодвинуть на задний план старшего отца. Однако выскочка C # упускает пару ключевых моментов IMO:
В этом случае MS - выскочка, пытающаяся отодвинуть на задний план старшего отца. Однако выскочка C # упускает пару ключевых моментов IMO:
[1 - сноска] Когда я говорю «такой язык, как C #», я имею в виду тот факт, что существуют другие языки с аналогичными функциями. В частности, такие функции, как: сборка мусора, 100% объектно-ориентированный с самого начала (против взлома C ++ в ОО), встроенная документация по типу xml (например, javadoc) и гибкость для выполнения многих разных задач.
Что касается обучения. NET:
Я сделал только небольшое / промежуточное количество C #, но из этого небольшого количества я заметил, что .NET в значительной степени требуется, когда вы делаете что-нибудь C #. (Я понимаю, что C # очень инцестуозен с .NET и его трудно отделить.) Как я понимаю, и я могу ошибаться ... большинство / все стандартные основные библиотеки C # - это C #, и поэтому вам нужно иметь .NET если вы делаете C #.
Вернуться к первоначальному вопросу " но причины изложены выше, в основном, память дороже, чем диск.
Эрик: заглушка LZMA может быть больше. Даже если алгоритм лучше, он не всегда является чистым плюсом.
Сканеры вирусов, которые ищут «неизвестные» вирусы, могут отмечать сжатые исполняемые файлы UPX как имеющие вирусы. Мне сказали, что это потому, что несколько вирусов используют UPX, чтобы скрыть себя. Я использовал UPX в программном обеспечении, и McAfee помечает файл как вирус.