2016-11-15 5 views
1

У меня есть две статические библиотеки с именем libx.a и liby.a.Можно ли смешивать две статические библиотеки с разными уровнями оптимизации?

libx.a составлен с использованием gcc -g; а liby.a составлен с gcc -O3.

Я хочу связать их два в один исполняемый файл.

Возможно ли это?

Это вредно?

+2

Я бы сказал, да, без проблем. – Djee

+1

В целом оптимизация - это то, что не должно влиять на интерфейс кода, только изменить его реализацию на что-то более эффективное в отношении пространства или скорости или что-то еще. Однако компиляторы могут сделать дополнительные предположения о программе и среде для ее оптимизации (например, многопоточность возможна). Я не знаю хороший пример, но оптимизатор может предположить, что весь или вообще не оптимизирован код, что предотвращает интероперабельность. Это только теоретическая мысль, хотя я не знаю, действительно ли какой-либо компилятор принимает это. Так что да, в общем, это жизнеспособно. – Downvoter

+3

Подумайте об этом так. Стандартная библиотека C реализуется в основном как библиотека объектов, и она поставляется оптимизированной, однако запущенные неоптимизированные программы, связанные с ней, полностью завершены. –

ответ

2

Да, это жизнеспособно, это не вредно, если оптимизация не изменяет ABI (вызовов функций или арифметики/представления с плавающей запятой и т. Д.). Хотя даже в тех случаях я считаю, что вся необходимая информация уже собрана или компоновщик решает проблемы.

 Смежные вопросы

  • Нет связанных вопросов^_^