У меня есть две статические библиотеки с именем libx.a
и liby.a
.Можно ли смешивать две статические библиотеки с разными уровнями оптимизации?
libx.a
составлен с использованием gcc -g
; а liby.a
составлен с gcc -O3
.
Я хочу связать их два в один исполняемый файл.
Возможно ли это?
Это вредно?
Я бы сказал, да, без проблем. – Djee
В целом оптимизация - это то, что не должно влиять на интерфейс кода, только изменить его реализацию на что-то более эффективное в отношении пространства или скорости или что-то еще. Однако компиляторы могут сделать дополнительные предположения о программе и среде для ее оптимизации (например, многопоточность возможна). Я не знаю хороший пример, но оптимизатор может предположить, что весь или вообще не оптимизирован код, что предотвращает интероперабельность. Это только теоретическая мысль, хотя я не знаю, действительно ли какой-либо компилятор принимает это. Так что да, в общем, это жизнеспособно. – Downvoter
Подумайте об этом так. Стандартная библиотека C реализуется в основном как библиотека объектов, и она поставляется оптимизированной, однако запущенные неоптимизированные программы, связанные с ней, полностью завершены. –