Прагма отключения оптимизации в .cpp файле под Linux.
От: Аноним  
Дата: 05.06.08 10:28
Оценка:
Доброго времени суток )
Имеется следующая проблема — есть с++ проект под Linux (проект создаётся в Eclipse). Проект компилируется с помощью gcc 4.1.2 (g++) с уровнем оптимизации O3. Компиляция всех файлов проходит успешно, кроме одного — в нём присутсвует функция, написанная на ассемблере (писал её не я, поэтому заменить ассемблерный код на аналогичный С не смогу). Необходимо понизить уровень оптимизации этой функции хотя бы до О2, или отключить оптимизацию этой функции вообще. Как это можно сделать? Если ли в Linux-е прагмы наподобие виндовой #pragma optimize("", off). Пробовал применить #pragma OPTIMIZE OFF и #pragma OPT_LEVEL 1, но они игнорируются...
Re: Прагма отключения оптимизации в .cpp файле под Linux.
От: rising_edge  
Дата: 05.06.08 10:50
Оценка:
А нельзя задать другие ключи компиляции для этого файла?
Re[2]: Прагма отключения оптимизации в .cpp файле под Linux.
От: Аноним  
Дата: 05.06.08 11:37
Оценка:
Здравствуйте, rising_edge, Вы писали:

_>А нельзя задать другие ключи компиляции для этого файла?


В Eclipse ключи для компиляции задаются в одном месте для ВСЕХ .cpp файлов. Насколько я в курсе, то скомпилировать отдельно взятый файл с ключами, отличными от тех, с которыми компилируются все остальные файлы нельзя. Хотя возможно я и ошибаюсь. Но всё таки хотелось бы отключить оптимизацию через прагму, если это возможно...
Re[3]: Прагма отключения оптимизации в .cpp файле под Linux.
От: e_k Россия  
Дата: 05.06.08 12:13
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, rising_edge, Вы писали:


_>>А нельзя задать другие ключи компиляции для этого файла?


А>В Eclipse ключи для компиляции задаются в одном месте для ВСЕХ .cpp файлов. Насколько я в курсе, то скомпилировать отдельно взятый файл с ключами, отличными от тех, с которыми компилируются все остальные файлы нельзя. Хотя возможно я и ошибаюсь. Но всё таки хотелось бы отключить оптимизацию через прагму, если это возможно...


http://gcc.gnu.org/ml/gcc/2006-02/msg00550.html
Похоже что нет.

Можно попробовать скомпилировать свой файл без оптимизации совсем отдельно, а в проект добавить уже *.o. Но как это делать в Eclipse — вот уж даже не знаю...
Re[3]: Прагма отключения оптимизации в .cpp файле под Linux.
От: zaufi Земля  
Дата: 05.06.08 14:47
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, rising_edge, Вы писали:


_>>А нельзя задать другие ключи компиляции для этого файла?


А>В Eclipse ключи для компиляции задаются в одном месте для ВСЕХ .cpp файлов. Насколько я в курсе, то скомпилировать отдельно взятый файл с ключами, отличными от тех, с которыми компилируются все остальные файлы нельзя. Хотя возможно я и ошибаюсь. Но всё таки хотелось бы отключить оптимизацию через прагму, если это возможно...


разберись луче с какойнить нормальной системой сборки и собирай все не убогим Eclipsом -- никакая IDE не даст тебе гибкости коммндлайновых тулов...
Re: Прагма отключения оптимизации в .cpp файле под Linux.
От: Аноним  
Дата: 06.06.08 02:40
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Доброго времени суток )

А>Имеется следующая проблема — есть с++ проект под Linux (проект создаётся в Eclipse). Проект компилируется с помощью gcc 4.1.2 (g++) с уровнем оптимизации O3. Компиляция всех файлов проходит успешно, кроме одного — в нём присутсвует функция, написанная на ассемблере (писал её не я, поэтому заменить ассемблерный код на аналогичный С не смогу). Необходимо понизить уровень оптимизации этой функции хотя бы до О2, или отключить оптимизацию этой функции вообще. Как это можно сделать? Если ли в Linux-е прагмы наподобие виндовой #pragma optimize("", off). Пробовал применить #pragma OPTIMIZE OFF и #pragma OPT_LEVEL 1, но они игнорируются...

А как уровень оптимизации влияет на [не]успешность сборки?
Re[2]: Прагма отключения оптимизации в .cpp файле под Linux.
От: ArtDenis Россия  
Дата: 06.06.08 04:36
Оценка:
Аноним 735 wrote:
> А как уровень оптимизации влияет на [не]успешность сборки?

Меня ещё больше удивляет, как степень оптимизации влияет на ассемблерный
код?
Posted via RSDN NNTP Server 2.1 beta
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re: Прагма отключения оптимизации в .cpp файле под Linux.
От: AleksandrN Россия  
Дата: 06.06.08 06:46
Оценка:
Здравствуйте, Аноним, Вы писали:


А>Компиляция всех файлов проходит успешно, кроме одного — в нём присутсвует функция, написанная на ассемблере (писал её не я, поэтому заменить ассемблерный код на аналогичный С не смогу).


А как оптимизация влияет на то, скомпилируется-ли файл? Что компилятор говорит об ошибках?

Если проблема действительно в ассемблерной вставке, то вынеси ассемблерный код в отдельный .asm файл, а потом скомпилируй его и слинкуй получившийся .o файл с остальными объектниками.
Ещё вариант — не использовать eclipse для сборки, а написать makefile — получишь больше гибкости и сможешь компилировать разные файлы с разными ключами.
Re[4]: Прагма отключения оптимизации в .cpp файле под Linux.
От: Roman Odaisky Украина  
Дата: 06.06.08 07:25
Оценка:
Здравствуйте, zaufi, Вы писали:

Z>разберись луче с какойнить нормальной системой сборки и собирай все не убогим Eclipsом -- никакая IDE не даст тебе гибкости коммндлайновых тулов...


А зачем на Eclipse бочку катить? Он замечательно вызывает сторонние make, если попросить.
До последнего не верил в пирамиду Лебедева.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.