Что-то я не пойму. В документации по icc 9.0 for linux есть опция -export, которая должна включать поддержку экспорта шаблонов. Но как начнёшь её использовать, компилятор ест, а линкер ругается. Причём странно, все нужные .et файлы генерируются, а на стадии линковки я всё равно получаю undefined reference. Может кто знает в чём проблема? Вот тест, который я пытаюсь скомпилировать:
Здравствуйте, Аноним, Вы писали:
А>Что-то я не пойму. В документации по icc 9.0 for linux есть опция -export, которая должна включать поддержку экспорта шаблонов. Но как начнёшь её использовать, компилятор ест, а линкер ругается. Причём странно, все нужные .et файлы генерируются, а на стадии линковки я всё равно получаю undefined reference. Может кто знает в чём проблема? Вот тест, который я пытаюсь скомпилировать:
Да, экспорт есть. Он появился еще в версии 8.1 для линукса. Вот пример из документации (насколько я понимаю, у комо в отношении экспорта все намного удобнее)
Of course, the code must be complete enough to compile and link.
Re[2]: icc & export
От:
Аноним
Дата:
15.08.05 08:50
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:
L_L>Здравствуйте, Аноним, Вы писали:
А>>Что-то я не пойму. В документации по icc 9.0 for linux есть опция -export, которая должна включать поддержку экспорта шаблонов. Но как начнёшь её использовать, компилятор ест, а линкер ругается. Причём странно, все нужные .et файлы генерируются, а на стадии линковки я всё равно получаю undefined reference. Может кто знает в чём проблема? Вот тест, который я пытаюсь скомпилировать:
L_L>Да, экспорт есть. Он появился еще в версии 8.1 для линукса. Вот пример из документации (насколько я понимаю, у комо в отношении экспорта все намного удобнее)
L_L>http://www.intel.com/software/products/compilers/clin/docs/ug_cpp/lin1160.htm
...
Спасибо за перевод документации. I really appreciate it .
Методом научного тыка мне удалось выяснить, что включение <cmath> или <iostream> вызывает в последствии ошибку undefined reference для экспортируемого шаблона. Вероятно, в компиляторе переполняется какая-то таблица функций. Вот такие пироги с поддержкой export в Intel C++.
Для справки: Comeau прекрасно собрал мне бинарник.
Здравствуйте, ArtDenis, Вы писали:
AD>Здравствуйте, Абыр Абырвалг, Вы писали:
АА>>Лучше экспортом не пользоваться. Баловство все это. Линкеру и без этого уже плохо...
AD>Согласен. Вот была бы STL и boost под экспорт заточена...
А я вот не согласен. Если имеется компилятор, поддерживающий export, то это ничего так даже приятная штука. И мне как-то всё равно, как себя чувствует линкер.
Кстати, Dinkumware производит STL, в котором используется export.
A>А я вот не согласен. Если имеется компилятор, поддерживающий export, то это ничего так даже приятная штука. И мне как-то всё равно, как себя чувствует линкер.
А тоже так считаю. Но вот беда, у интела все как-то очень коряво. Может руки как нить не так растут, но добиться работы экспорта при наличии <iostream> я не смог.
A>Кстати, Dinkumware производит STL, в котором используется export.
Of course, the code must be complete enough to compile and link.
Здравствуйте, alexeiz, Вы писали:
AD>>Согласен. Вот была бы STL и boost под экспорт заточена... A>А я вот не согласен. Если имеется компилятор, поддерживающий export, то это ничего так даже приятная штука. И мне как-то всё равно, как себя чувствует линкер.
Я имел ввиду, что мои собственные шаблонные библиотеки занимают не особо большой объём и бысто компилируются. Поэтому я не вижу особой необходимости в том, чтобы использовать экспорт в своих библиотеках. Зато STL и буст компилируются очень медленно из-за большого объёма кода. Я был бы не против, если эти быблиотеки были бы заточен под экспорт. Думаю, время компиляции файлов увеличилось бы на несколько порядков.
Здравствуйте, Lorenzo_LAMAS, Вы писали:
A>>А я вот не согласен. Если имеется компилятор, поддерживающий export, то это ничего так даже приятная штука. И мне как-то всё равно, как себя чувствует линкер.
L_L>А тоже так считаю. Но вот беда, у интела все как-то очень коряво. Может руки как нить не так растут, но добиться работы экспорта при наличии <iostream> я не смог.
Вероятно EDG frontend старый. Intel что-то не спешит его обновлять. Остается como. Я с ним сейчас и развлекаюсь.
Собственно говоря, после прочтения вот этой дискуссии я и заинтересовался export'ом. А до этого, следуя Herb Sutter'у, считал, что это — бесполезная вещь. Теперь придерживаюсь мнения, что сначала нужно попробовать, а потом уже решать.
A>>Кстати, Dinkumware производит STL, в котором используется export.
A>Собственно говоря, после прочтения вот этой дискуссии я и заинтересовался export'ом. А до этого, следуя Herb Sutter'у, считал, что это — бесполезная вещь. Теперь придерживаюсь мнения, что сначала нужно попробовать, а потом уже решать.
Экспорт вещь интересная. Мне вот понравилось, что благодаря ему компилятор наконец-то может найти нетривиальные ошибки (хотя это, конечно, мелкий побочный эффект). А людям типа Саттера, ИМХО, не стоит доверять безоговорочно. Об экспорте надо читать мнение людей, его реализовавших, уж кому-кому а им виднее, что такое экспорт.
Of course, the code must be complete enough to compile and link.