Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Компилятор С++ в С
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
Вовка_Бызов
Есть у меня прога, написанная на С++. Достаточно мудреная и объемная.. И есть среда, в которой нет компилятора С++, но есть полноценный С.

Не подскажет ли всемогущий олл, где взять кросс-компилятор для получения С-кода из С++. Платформа - близкая к линуксу - но не совсем..

Мне тут советовали какой-то comeau компилятор - но я просто не нашел, откуда его скачать...

help.gif
mdmitry
Полноценной переделки не получится. Классы в структуры, все методы в функции, исключений нет. Оттранслироввать просто не получится из-за идеалогической разницы в языках (IMHO).
Вовка_Бызов
Цитата(mdmitry @ Nov 20 2008, 18:48) *
Полноценной переделки не получится. Классы в структуры, все методы в функции, исключений нет. Оттранслироввать просто не получится из-за идеалогической разницы в языках (IMHO).


На самом деле - видиом, не так.. Вот что пишут:

Цитата
Depends on what you mean. If you mean, Is it possible to convert C++ to readable and maintainable C-code? then sorry, the answer is No — C++ features don't directly map to C, plus the generated C code is not intended for humans to follow. If instead you mean, Are there compilers which convert C++ to C for the purpose of compiling onto a platform that yet doesn't have a C++ compiler? then you're in luck


http://www.parashift.com/c++-faq-lite/comp....html#faq-38.13
sergeeff
С++ можно рассматривать как расширение С. Соответственно, расширенное никогда не может быть сведено к более узкому варианту.
Вовка_Бызов
Цитата(sergeeff @ Nov 20 2008, 20:10) *
С++ можно рассматривать как расширение С. Соответственно, расширенное никогда не может быть сведено к более узкому варианту.



что я могу сказать?
Цитата
If instead you mean, Are there compilers which convert C++ to C for the purpose of compiling onto a platform that yet doesn't have a C++ compiler? then you're in luck
sergeeff
Я чего-то не понимаю. Ваши замечания с вопросительными знаками, они к чему? Типа вы уже можете конвертнуть С++ проект в С, а я по серости мозговой утверждаю, что это сделать невозможно?
haker_fox
Цитата(sergeeff @ Nov 21 2008, 01:10) *
С++ можно рассматривать как расширение С. Соответственно, расширенное никогда не может быть сведено к более узкому варианту.

Но его можно свести ко множеству хитросплетенных узких вариантов, среди которых черт ногу сломит smile.gif

Цитата(Вовка_Бызов @ Nov 20 2008, 21:18) *
Есть у меня прога, написанная на С++. Достаточно мудреная и объемная.. И есть среда, в которой нет компилятора С++, но есть полноценный С.

А что это за "среда" в которой нет компилятора Си++? Компилятор обычно вещь самостоятельная и не зависящая от среды...
Вовка_Бызов
Цитата(haker_fox @ Nov 21 2008, 07:16) *
А что это за "среда" в которой нет компилятора Си++? Компилятор обычно вещь самостоятельная и не зависящая от среды...

Хех.. Я тоже так думал, когда ваял проект.. Есть такая среда для mips Багет - oc2000 называется.. В общем - ее разработчики принципиально не стали делать компилятор С++. Говорят - они (в отсутствии какого-то удобоваримого стандарта) не могут гарантировать качество компилятора - а потому и делать его не могут...

Хотя в тайне (я так думаю) - они его уже давно сделали.. smile.gif Тока - не дают его официально...

Вот и приходится искать обходные пути.. Блин...

To All:
Так что - нету ни у кого версии компилятора Comeau ?

Цитата(sergeeff @ Nov 21 2008, 03:30) *
Я чего-то не понимаю. Ваши замечания с вопросительными знаками, они к чему? Типа вы уже можете конвертнуть С++ проект в С, а я по серости мозговой утверждаю, что это сделать невозможно?

Хочется стать в позу обиженного? Или - с пеной у рта поспорить о чем-то? Я ведь не свое мнение привел в качестве аргумента. А привел ссылку, где утверждается, что - таки да, можно. Да - текст такого С-кода для человека вряд ли будет понятен, но все же это будет код, который при трансляции будет делать все, что заложено в С++ код.

И бить себя в грудь и говорить, что я все знаю, а чего не знаю - не существует - не надо. Не может человек знать все... Априори. wink.gif
dxp
Цитата(Вовка_Бызов @ Nov 20 2008, 19:18) *
Есть у меня прога, написанная на С++. Достаточно мудреная и объемная.. И есть среда, в которой нет компилятора С++, но есть полноценный С.

Не подскажет ли всемогущий олл, где взять кросс-компилятор для получения С-кода из С++. Платформа - близкая к линуксу - но не совсем..

Мне тут советовали какой-то comeau компилятор - но я просто не нашел, откуда его скачать...

help.gif

Самым первым С++ компилятором был CFront, написанный Б.Страуструпом в процессе разработки языка. Этот компилятор не был полнлоценным С++ компилятором - он умел только входное описание на С++ транслировать в описание на С, а оно уже скармливалось штатным С компиляторам, которых тогда уже было достаточно и неплохого качества. Т.е. по сути CFront был С++ Front-End'ом для С компиляторов, откуда и название.

Вам, я понял, именно такой функционал и нужен. Можно поискать, наверняка можно найти, только вот есть один нюанс - разработка CFront закончилась давно - как только стали появлятся полноценные компиляторы, необходимость в нем отпала. Поэтому по уровню развития фич он должен на сегодняшний день сильно отставать от современных боевых С++ компиляторов. Возможность применения зависит от того, насколько глубоко использует ваша программа возможности языка. Если в ней понатолкано исключений, шаблонов, множественного наследования, то скорее всего будет засада. Кроме того, CFront может сильно отличаться в трактовке правил языка по сравенению с действующим Стандартом (Стандарт от 1998 года, а развитие CFront, AFAIR, завершилось где-то в конце 1980-х).

Может, конечно, есть и современная инкарнация, но я ничего об этом не слышал. Как и о том, чтобы С++ компиляторы умели выдавать генерацию на С.
msalov
C++. Release 3.0.3, AT&T Bell Laboratories, May 1994.
http://www.softwarepreservation.org/projec...dex.html#cfront
http://www.softwarepreservation.org/projec...t/release_3.0.3

Bjarne Stroustrup notes, "A warning that Cfront 3 is pre-standard and emphatically not recommended for use or further development might be in place."
Harbour
кажись в этой oc2000 заявлена поддержка POSIX и X Window - скорей всего ребята тупо используют какой-нить вариант gcc. Я бы изучил ихний "компилятор только C" и для начала попытался бы заменить его на gcc. просто попробуйте собрать g++ на данной платформе
sergeeff
Если речь идет о MIPS, то в MSVS2008 есть нормальный С++ компилятор.
Вовка_Бызов
Цитата(Harbour @ Nov 21 2008, 11:30) *
кажись в этой oc2000 заявлена поддержка POSIX и X Window - скорей всего ребята тупо используют какой-нить вариант gcc. Я бы изучил ихний "компилятор только C" и для начала попытался бы заменить его на gcc. просто попробуйте собрать g++ на данной платформе

Уже была попытка. Линкер ругается на некорректный тип объектного файла... Видимо - несоответствие платформы - я использовал g++ для интеля, а тут вроде как mips...
scifi
Цитата(Вовка_Бызов @ Nov 21 2008, 13:34) *
Уже была попытка. Линкер ругается на некорректный тип объектного файла... Видимо - несоответствие платформы - я использовал g++ для интеля, а тут вроде как mips...

Вом нужен кросс-компилятор для mips. Называться он должен mips-elf-gcc или вроде того. Можно даже такие слова поискать в гугле. Только вот как линковать код, который он нагенерит, с штатными библиотеками Вашей платформы - это непростой вопрос.
А насчёт компилятора Си++ в Си припоминаю, что Keil сделал для семейства C16x компилятор Си++ именно таким образом (через Си). Причём, если правильно помню, даже накапливал отладочную информацию с привязкой к исходниками на Си++ для высокоуровневой отладки.
amw
Цитата(Вовка_Бызов @ Nov 21 2008, 12:34) *
Уже была попытка. Линкер ругается на некорректный тип объектного файла... Видимо - несоответствие платформы - я использовал g++ для интеля, а тут вроде как mips...

И каково имя файла самого компилятора? mips-elf-gcc? sde-gcc?
axle
Цитата(Вовка_Бызов @ Nov 20 2008, 20:18) *
Не подскажет ли всемогущий олл, где взять кросс-компилятор для получения С-кода из С++. Платформа - близкая к линуксу - но не совсем..


Есть вот такой фронтенд http://www.edg.com/index.php?location=c_frontend. Но просто так скачать его не получится. Если только поискать. smile.gif

Могу скзать, что точно работает. Включая шаблоны, исключения и т.д. Те кто говорит, что преобразование из С в С++ невозможно - просто несут бред. Мы используем этот фронтенд в составе проприетарного тулкита от одного известного производителя чипов. Видимо в там решили, что им будет проще лицензировать такую штуку, чем свой С++ компилятор разрабатывать.
Harbour
Цитата(Вовка_Бызов @ Nov 21 2008, 12:34) *
Уже была попытка. Линкер ругается на некорректный тип объектного файла... Видимо - несоответствие платформы - я использовал g++ для интеля, а тут вроде как mips...

может повторюсь, но следует попробовать _собрать_ g++ на этой платформе
sergeeff
Цитата(axle @ Nov 22 2008, 02:28) *
Есть вот такой фронтенд http://www.edg.com/index.php?location=c_frontend. Но просто так скачать его не получится. Если только поискать. smile.gif

Могу скзать, что точно работает. Включая шаблоны, исключения и т.д. Те кто говорит, что преобразование из С в С++ невозможно - просто несут бред. Мы используем этот фронтенд в составе проприетарного тулкита от одного известного производителя чипов. Видимо в там решили, что им будет проще лицензировать такую штуку, чем свой С++ компилятор разрабатывать.


По аккуратнеее насчет бреда. Во многих книгах гуру по С++ приводится список современных компиляторов С++ и сравнивается, могут ли они "скушать" какие-то С++ решения или нет. Далеко не надо ходить, можно посмотреть MS VS6.0 и MS VS2008. В 6 версии масса вещей не работает. А вы ссылаетесь на продукт, разработанный в 1992 году. Да, наверное, он некоторые простые конструкции С++ и перегонит в С, но насколько эффективно, насколько безошибочно?

Для иллюстрации. Известная штука Singletone - класс, допускающий создание только одного экземпляра объекта. При этом невозможно создать копию такого объекта. И как вы мыслите себе такое реализовать на С? С выдачей адекватного кода ошибки на этапе компиляции?
S.R.
Цитата(sergeeff @ Nov 22 2008, 16:17) *
По аккуратнеее насчет бреда. Во многих книгах гуру по С++ приводится список современных компиляторов С++ и сравнивается, могут ли они "скушать" какие-то С++ решения или нет. Далеко не надо ходить, можно посмотреть MS VS6.0 и MS VS2008. В 6 версии масса вещей не работает. А вы ссылаетесь на продукт, разработанный в 1992 году. Да, наверное, он некоторые простые конструкции С++ и перегонит в С, но насколько эффективно, насколько безошибочно?

Самая интересная фишка получается в том, что в плане соответствия стандарту языка самым продвинутым считается Comeau, а это именно фронт-компилятор в C. Так что насчет бреда...

Цитата
Для иллюстрации. Известная штука Singletone - класс, допускающий создание только одного экземпляра объекта. При этом невозможно создать копию такого объекта. И как вы мыслите себе такое реализовать на С? С выдачей адекватного кода ошибки на этапе компиляции?

На этапе компиляции ни один разумный компилятор не может и не должен сообщать о такой ошибке. Поскольку ее наличие может выяснится и при линковке.
А нормальный Singletone и не будет генерировать ошибок, просто возвращая адрес единственного существующего экземпляра...
sergeeff
Мне в последнее время все яснее становится, что надо самим себе ответить на вопрос:

1. Мы работаем, т.е. создаем современный промышленный продукт, продаваемый на рынке?
2. Или мы занимаемся наукоподобными изысками, характерными для младших научных сотрудников из "НИИЧАВО" середины 70-х годов прошлого века?

Найдешь для себя ответ, выберешь стиль профессиональной жизни и пути решения задач.
vik0
Цитата(sergeeff @ Nov 22 2008, 14:17) *
А вы ссылаетесь на продукт, разработанный в 1992 году. Да, наверное, он некоторые простые конструкции С++ и перегонит в С, но насколько эффективно, насколько безошибочно?

А вы текст дальше первого предложения не читаете?
Цитата
It supports the C++ language of the ISO/IEC 14882:2003 standard (the complete language; see our description of language features)
sergeeff
Каждый топчет свою дорогу в этой жизни...
Вовка_Бызов
Цитата(amw @ Nov 21 2008, 21:04) *
И каково имя файла самого компилятора? mips-elf-gcc? sde-gcc?


mipsisa32-elf-g++

Проблема в том, что линкер начинает выдавать кучу разных необнаруженных ссылок (видимо - специфика C++):

__rethrow
__builtin_new
__builtin_delete
__builtin_vec_new
__builtin_vec_delete

Что касается CFront - пытаюсь уже второй день поставить его под красную шляпу (седьмую). Не пойму - может руки кривые, но приходится ковырять makefile-ы... В общем - еще до финала не дошел.. Хотя - надежды не исчезли wink.gif

Цитата(sergeeff @ Nov 22 2008, 22:19) *
Мне в последнее время все яснее становится, что надо самим себе ответить на вопрос:

1. Мы работаем, т.е. создаем современный промышленный продукт, продаваемый на рынке?
2. Или мы занимаемся наукоподобными изысками, характерными для младших научных сотрудников из "НИИЧАВО" середины 70-х годов прошлого века?

Найдешь для себя ответ, выберешь стиль профессиональной жизни и пути решения задач.


Философия - вещь сильная.. Тока зачастую, живем мы в мире обстоятельств и выбираем пути под их неимоверною тяжестью... wink.gif

Цитата(sergeeff @ Nov 22 2008, 15:17) *
Для иллюстрации. Известная штука Singletone - класс, допускающий создание только одного экземпляра объекта. При этом невозможно создать копию такого объекта. И как вы мыслите себе такое реализовать на С? С выдачей адекватного кода ошибки на этапе компиляции?

На самом деле - как я понял - компиляторы <С++ в С> используют язык С в качестве аналога некоего кросс-платформенного ассемблера. Т.е. код, генерируемый таким компилятором, НЕ является читаемым с точки зрения программиста. И все изыски С++ там реализуются программными средствами языка С.
amw
Цитата(Вовка_Бызов @ Nov 24 2008, 13:27) *
mipsisa32-elf-g++

Я Вас удивлю.
ЭТО И ЕСТЬ C++ (Си Плюс Плюс) компилятор от GCC.
Цитата
Проблема в том, что линкер начинает выдавать кучу разных необнаруженных ссылок (видимо - специфика C++):

__rethrow
__builtin_new
__builtin_delete
__builtin_vec_new
__builtin_vec_delete

А это либо ключи выставлены неправильно, либо нехватает библиотеки libstdc++
Ее можно и самому скомпилить.
А что говорит
Код
mipsisa32-elf-g++ -v

Чем он отличается от SDE предлагаемого самим mips.com?
Попробуйте его (в смысле SDE). MIPS там много полезностей сделала (оптимизация, спец-ключи для архитектур ...).

Для сранения
Код
$sde-g++ -v
Reading specs from /opt/toolchains/mips-sde/bin/../lib/gcc/sde/3.4.4/specs
Configured with: /var/tmp/releasetool.tmp/bank-20070420-1231/B-i386-linux/toolchain/mipssde-6.06.01/configure --target=sde --prefix=/usr/local/sde6 --enable-languages=c,c++ --without-newlib --disable-shared --disable-nls --disable-tui --disable-multilib
Thread model: mipssde
gcc version 3.4.4 mipssde-6.06.01-20070420


$sde-g++ --target-help

Target specific options:
  -mno-xgot                 Do not lift restrictions on GOT size
  -mxgot                    Lift restrictions on GOT size
  -mips16e                  Generate mips16e code
  -mno-mips16               Generate normal-mode code
  -mips16                   Generate mips16 code
  -mno-explicit-relocs      Use assembler macros instead of relocation operators
  -mexplicit-relocs         Use NewABI-style %reloc() assembly operators
  -mno-check-zero-division  Don't trap on integer divide by zero
  -mcheck-zero-division     Trap on integer divide by zero
  -mno-fix-24k-e48          Don't work around the 24K errata no. 48
  -mfix-24k-e48             Work around the 24K errata no. 48
  -mno-fix-sb1              Don't work around errata for early SB-1 revision 2 cores
  -mfix-sb1                 Work around errata for early SB-1 revision 2 cores
  -mno-fix4300              Don't work around early 4300 hardware bug
  -mfix4300                 Work around early 4300 hardware bug
  -mfused-madd              Generate fused multiply/add instructions
  -mno-fused-madd           Don't generate fused multiply/add instructions
  -mno-mad                  Don't use multiply accumulate
  -mmad                     Use multiply accumulate
  -mno-dsp                  Don't use MIPS DSP ASE instructions
  -mdsp                     Use MIPS DSP ASE instructions
  -mno-smartmips            Don't use SmartMIPS instructions
  -msmartmips               Use SmartMIPS instructions
  -mno-mips3d               Don't use MIPS-3D instructions
  -mips3d                   Use MIPS-3D instructions
  -mno-paired-single        Don't use paired-single floating point instructions
  -mpaired-single           Use paired-single floating point instructions
  -mdouble-float            Don't use single (32-bit) FP only
  -msingle-float            Use single (32-bit) FP only
  -mel                      Use little-endian byte order
  -meb                      Use big-endian byte order
  -mno-uninit-const-in-rodata Don't put uninitialized constants in ROM
  -muninit-const-in-rodata  Put uninitialized constants in ROM (needs -membedded-data)
  -mno-embedded-data        Don't use ROM instead of RAM
  -membedded-data           Use ROM instead of RAM
  -mno-embedded-pic         Don't use embedded PIC
  -membedded-pic            Use embedded PIC
  -mno-long-calls           Don't use indirect calls
  -mlong-calls              Use indirect calls
  -mno-abicalls             Don't use Irix PIC
  -mabicalls                Use Irix PIC
  -mgp32                    Use 32-bit general registers
  -mgp64                    Use 64-bit general registers
  -mfp32                    Use 32-bit FP registers
  -mfp64                    Use 64-bit FP registers
  -mhard-float              Use hardware floating point
  -msoft-float              Use software floating point
  -mno-mips-tfile           Don't use mips-tfile asm postpass
  -mmips-tfile              Use mips-tfile asm postpass
  -mno-memcpy               Optimize block moves
  -mmemcpy                  Don't optimize block moves
  -mno-stats                Don't output compiler statistics
  -mstats                   Output compiler statistics (now ignored)
  -mno-gpopt                Don't use GP relative sdata/sbss sections (now ignored)
  -mno-gpOPT                Don't use GP relative sdata/sbss sections (now ignored)
  -mgpopt                   Use GP relative sdata/sbss sections (now ignored)
  -mgpOPT                   Use GP relative sdata/sbss sections (now ignored)
  -mno-rnames               Don't use symbolic register names
  -mrnames                  Use symbolic register names
  -mgas                     Use GNU as
  -mmips-as                 Use MIPS as
  -mno-split-addresses      Don't optimize lui/addiu address loads
  -msplit-addresses         Optimize lui/addiu address loads
  -mlong32                  Use 32-bit long type
  -mlong64                  Use 64-bit long type
  -mint64                   Use 64-bit int type
  -mno-float                Don't use floating point libraries
  -mcode-xonly              Execute-only MIPS16 code, strings and jump tables in data seg
  -mno-data-in-code         Don't place MIPS16 constant data in the code section
  -mbranch-cost=            Specify cost of branch instructions
  -mno-branch-likely        Alias for -mbranch-likely=no
  -mbranch-likely           Specify when to use branch likely instructions
  -mflush-func=             Specify cache flush function
  -mno-flush-func           Don't call any cache flush functions
  -mips                     Specify a Standard MIPS ISA
  -mabi=                    Specify an ABI
  -march=                   Specify CPU for code generation purposes
  -mtune=                   Specify CPU for scheduling purposes

There are undocumented target specific options as well.
MIPS options:
-EB                     generate big endian output
-EL                     generate little endian output
-g, -g2                 do not remove unneeded NOPs or swap branches
-G NUM                  allow referencing objects up to NUM bytes
                        implicitly with the gp register [default 8]
-mips1                  generate MIPS ISA I instructions
-mips2                  generate MIPS ISA II instructions
-mips3                  generate MIPS ISA III instructions
-mips4                  generate MIPS ISA IV instructions
-mips5                  generate MIPS ISA V instructions
-mips32                 generate MIPS32 ISA instructions
-mips32r2               generate MIPS32 release 2 ISA instructions
-mips64                 generate MIPS64 ISA instructions
-mips64r2               generate MIPS64 release 2 ISA instructions
-march=CPU/-mtune=CPU   generate code/schedule for CPU, where CPU is one of:
                        mips1, mips2, mips3, mips4, mips5, mips32,
                        mips32r2, mips64, mips64r2, r3000, r2000, r3900,
                        r6000, r4000, r4010, vr4100, vr4111, vr4120,
                        vr4130, vr4181, vr4300, r4400, r4600, orion,
                        r4650, r8000, r10000, r12000, vr5000, vr5400,
                        vr5500, rm5200, rm5230, rm5231, rm5261, rm5721,
                        rm7000, rm9000, 4kc, 4km, 4kp, 4ksc, 4kec, 4kem,
                        4kep, 4ksd, m4k, m4kp, 24k, 24kc, 24kf2_1, 24kf,
                        24kf1_1, 24kfx, 24kx, 24ke, 24kec, 24kef2_1,
                        24kef, 24kef1_1, 24kefx, 24kex, 34k, 34kc,
                        34kf2_1, 34kf, 34kf1_1, 34kfx, 34kx, 74kc,
                        74kf2_1, 74kf, 74kf1_1, 74kfx, 74kx, 74kf3_2,
                        5kc, 5kf, 20kc, 25kf, sb1, from-abi
-mCPU                   equivalent to -march=CPU -mtune=CPU. Deprecated.
-no-mCPU                don't generate code specific to CPU.
                        For -mCPU and -no-mCPU, CPU must be one of:
                        3900, 4010, 4100, 4650
-mips16                 generate mips16 instructions
-no-mips16              do not generate mips16 instructions
-mips16e                generate mips16e instructions
-no-mips16e             do not generate mips16e instructions
-smartmips              generate smartmips instructions
-no-smartmips           do not generate smartmips instructions
-mfix-vr4120            work around certain VR4120 errata
-mgp32                  use 32-bit GPRs, regardless of the chosen ISA
-mfp32                  use 32-bit FPRs, regardless of the chosen ISA
-O0                     remove unneeded NOPs, do not swap branches
-O                      remove unneeded NOPs and swap branches
--[no-]construct-floats [dis]allow floating point values to be constructed
--trap, --no-break      trap exception on div by 0 and mult overflow
--break, --no-trap      break exception on div by 0 and mult overflow
-KPIC, -call_shared     generate SVR4 position independent code
-non_shared             do not generate position independent code
-xgot                   assume a 32 bit GOT
-mpdr, -mno-pdr         enable/disable creation of .pdr sections
-mabi=ABI               create ABI conformant object file for:
                        32, o64, n32, 64, eabi
-32                     create o32 ABI object file (default)
-n32                    create n32 ABI object file
-64                     create 64 ABI object file
elf32ebmip:
  -Bgroup               Selects group name lookup rules for DSO
  --disable-new-dtags   Disable new dynamic tags
  --enable-new-dtags    Enable new dynamic tags
  --eh-frame-hdr        Create .eh_frame_hdr section
  -z combreloc          Merge dynamic relocs into one section and sort
  -z defs               Report unresolved symbols in object files.
  -z execstack          Mark executable as requiring executable stack
  -z initfirst          Mark DSO to be initialized first at runtime
  -z interpose          Mark object to interpose all DSOs but executable
  -z loadfltr           Mark object requiring immediate process
  -z muldefs            Allow multiple definitions
  -z nocombreloc        Don't merge dynamic relocs into one section
  -z nocopyreloc        Don't create copy relocs
  -z nodefaultlib       Mark object not to use default search paths
  -z nodelete           Mark DSO non-deletable at runtime
  -z nodlopen           Mark DSO not available to dlopen
  -z nodump             Mark DSO not available to dldump
  -z noexecstack        Mark executable as not requiring executable stack
  -z norelro            Don't create RELRO program header
  -z now                Mark object non-lazy runtime binding
  -z origin             Mark object requiring immediate $ORIGIN processing
                          at runtime
  -z relro              Create RELRO program header
  -z KEYWORD            Ignored for Solaris compatibility
elf32elmip:
  -Bgroup               Selects group name lookup rules for DSO
  --disable-new-dtags   Disable new dynamic tags
  --enable-new-dtags    Enable new dynamic tags
  --eh-frame-hdr        Create .eh_frame_hdr section
  -z combreloc          Merge dynamic relocs into one section and sort
  -z defs               Report unresolved symbols in object files.
  -z execstack          Mark executable as requiring executable stack
  -z initfirst          Mark DSO to be initialized first at runtime
  -z interpose          Mark object to interpose all DSOs but executable
  -z loadfltr           Mark object requiring immediate process
  -z muldefs            Allow multiple definitions
  -z nocombreloc        Don't merge dynamic relocs into one section
  -z nocopyreloc        Don't create copy relocs
  -z nodefaultlib       Mark object not to use default search paths
  -z nodelete           Mark DSO non-deletable at runtime
  -z nodlopen           Mark DSO not available to dlopen
  -z nodump             Mark DSO not available to dldump
  -z noexecstack        Mark executable as not requiring executable stack
  -z norelro            Don't create RELRO program header
  -z now                Mark object non-lazy runtime binding
  -z origin             Mark object requiring immediate $ORIGIN processing
                          at runtime
  -z relro              Create RELRO program header
  -z KEYWORD            Ignored for Solaris compatibility
elf32ltsmip:
  -Bgroup               Selects group name lookup rules for DSO
  --disable-new-dtags   Disable new dynamic tags
  --enable-new-dtags    Enable new dynamic tags
  --eh-frame-hdr        Create .eh_frame_hdr section
  -z combreloc          Merge dynamic relocs into one section and sort
  -z defs               Report unresolved symbols in object files.
  -z execstack          Mark executable as requiring executable stack
  -z initfirst          Mark DSO to be initialized first at runtime
  -z interpose          Mark object to interpose all DSOs but executable
  -z loadfltr           Mark object requiring immediate process
  -z muldefs            Allow multiple definitions
  -z nocombreloc        Don't merge dynamic relocs into one section
  -z nocopyreloc        Don't create copy relocs
  -z nodefaultlib       Mark object not to use default search paths
  -z nodelete           Mark DSO non-deletable at runtime
  -z nodlopen           Mark DSO not available to dlopen
  -z nodump             Mark DSO not available to dldump
  -z noexecstack        Mark executable as not requiring executable stack
  -z norelro            Don't create RELRO program header
  -z now                Mark object non-lazy runtime binding
  -z origin             Mark object requiring immediate $ORIGIN processing
                          at runtime
  -z relro              Create RELRO program header
  -z KEYWORD            Ignored for Solaris compatibility
elf32ltsmipn32:
  -Bgroup               Selects group name lookup rules for DSO
  --disable-new-dtags   Disable new dynamic tags
  --enable-new-dtags    Enable new dynamic tags
  --eh-frame-hdr        Create .eh_frame_hdr section
  -z combreloc          Merge dynamic relocs into one section and sort
  -z defs               Report unresolved symbols in object files.
  -z execstack          Mark executable as requiring executable stack
  -z initfirst          Mark DSO to be initialized first at runtime
  -z interpose          Mark object to interpose all DSOs but executable
  -z loadfltr           Mark object requiring immediate process
  -z muldefs            Allow multiple definitions
  -z nocombreloc        Don't merge dynamic relocs into one section
  -z nocopyreloc        Don't create copy relocs
  -z nodefaultlib       Mark object not to use default search paths
  -z nodelete           Mark DSO non-deletable at runtime
  -z nodlopen           Mark DSO not available to dlopen
  -z nodump             Mark DSO not available to dldump
  -z noexecstack        Mark executable as not requiring executable stack
  -z norelro            Don't create RELRO program header
  -z now                Mark object non-lazy runtime binding
  -z origin             Mark object requiring immediate $ORIGIN processing
                          at runtime
  -z relro              Create RELRO program header
  -z KEYWORD            Ignored for Solaris compatibility
elf64ltsmip:
  -Bgroup               Selects group name lookup rules for DSO
  --disable-new-dtags   Disable new dynamic tags
  --enable-new-dtags    Enable new dynamic tags
  --eh-frame-hdr        Create .eh_frame_hdr section
  -z combreloc          Merge dynamic relocs into one section and sort
  -z defs               Report unresolved symbols in object files.
  -z execstack          Mark executable as requiring executable stack
  -z initfirst          Mark DSO to be initialized first at runtime
  -z interpose          Mark object to interpose all DSOs but executable
  -z loadfltr           Mark object requiring immediate process
  -z muldefs            Allow multiple definitions
  -z nocombreloc        Don't merge dynamic relocs into one section
  -z nocopyreloc        Don't create copy relocs
  -z nodefaultlib       Mark object not to use default search paths
  -z nodelete           Mark DSO non-deletable at runtime
  -z nodlopen           Mark DSO not available to dlopen
  -z nodump             Mark DSO not available to dldump
  -z noexecstack        Mark executable as not requiring executable stack
  -z norelro            Don't create RELRO program header
  -z now                Mark object non-lazy runtime binding
  -z origin             Mark object requiring immediate $ORIGIN processing
                          at runtime
  -z relro              Create RELRO program header
  -z KEYWORD            Ignored for Solaris compatibility
elf32btsmip:
  -Bgroup               Selects group name lookup rules for DSO
  --disable-new-dtags   Disable new dynamic tags
  --enable-new-dtags    Enable new dynamic tags
  --eh-frame-hdr        Create .eh_frame_hdr section
  -z combreloc          Merge dynamic relocs into one section and sort
  -z defs               Report unresolved symbols in object files.
  -z execstack          Mark executable as requiring executable stack
  -z initfirst          Mark DSO to be initialized first at runtime
  -z interpose          Mark object to interpose all DSOs but executable
  -z loadfltr           Mark object requiring immediate process
  -z muldefs            Allow multiple definitions
  -z nocombreloc        Don't merge dynamic relocs into one section
  -z nocopyreloc        Don't create copy relocs
  -z nodefaultlib       Mark object not to use default search paths
  -z nodelete           Mark DSO non-deletable at runtime
  -z nodlopen           Mark DSO not available to dlopen
  -z nodump             Mark DSO not available to dldump
  -z noexecstack        Mark executable as not requiring executable stack
  -z norelro            Don't create RELRO program header
  -z now                Mark object non-lazy runtime binding
  -z origin             Mark object requiring immediate $ORIGIN processing
                          at runtime
  -z relro              Create RELRO program header
  -z KEYWORD            Ignored for Solaris compatibility
elf32btsmipn32:
  -Bgroup               Selects group name lookup rules for DSO
  --disable-new-dtags   Disable new dynamic tags
  --enable-new-dtags    Enable new dynamic tags
  --eh-frame-hdr        Create .eh_frame_hdr section
  -z combreloc          Merge dynamic relocs into one section and sort
  -z defs               Report unresolved symbols in object files.
  -z execstack          Mark executable as requiring executable stack
  -z initfirst          Mark DSO to be initialized first at runtime
  -z interpose          Mark object to interpose all DSOs but executable
  -z loadfltr           Mark object requiring immediate process
  -z muldefs            Allow multiple definitions
  -z nocombreloc        Don't merge dynamic relocs into one section
  -z nocopyreloc        Don't create copy relocs
  -z nodefaultlib       Mark object not to use default search paths
  -z nodelete           Mark DSO non-deletable at runtime
  -z nodlopen           Mark DSO not available to dlopen
  -z nodump             Mark DSO not available to dldump
  -z noexecstack        Mark executable as not requiring executable stack
  -z norelro            Don't create RELRO program header
  -z now                Mark object non-lazy runtime binding
  -z origin             Mark object requiring immediate $ORIGIN processing
                          at runtime
  -z relro              Create RELRO program header
  -z KEYWORD            Ignored for Solaris compatibility
elf64btsmip:
  -Bgroup               Selects group name lookup rules for DSO
  --disable-new-dtags   Disable new dynamic tags
  --enable-new-dtags    Enable new dynamic tags
  --eh-frame-hdr        Create .eh_frame_hdr section
  -z combreloc          Merge dynamic relocs into one section and sort
  -z defs               Report unresolved symbols in object files.
  -z execstack          Mark executable as requiring executable stack
  -z initfirst          Mark DSO to be initialized first at runtime
  -z interpose          Mark object to interpose all DSOs but executable
  -z loadfltr           Mark object requiring immediate process
  -z muldefs            Allow multiple definitions
  -z nocombreloc        Don't merge dynamic relocs into one section
  -z nocopyreloc        Don't create copy relocs
  -z nodefaultlib       Mark object not to use default search paths
  -z nodelete           Mark DSO non-deletable at runtime
  -z nodlopen           Mark DSO not available to dlopen
  -z nodump             Mark DSO not available to dldump
  -z noexecstack        Mark executable as not requiring executable stack
  -z norelro            Don't create RELRO program header
  -z now                Mark object non-lazy runtime binding
  -z origin             Mark object requiring immediate $ORIGIN processing
                          at runtime
  -z relro              Create RELRO program header
  -z KEYWORD            Ignored for Solaris compatibility
Вовка_Бызов
Цитата(amw @ Nov 24 2008, 15:11) *
Я Вас удивлю.
ЭТО И ЕСТЬ C++ (Си Плюс Плюс) компилятор от GCC.

Дык я и не сомневаюсь - потому и пользовался им (кстати - скаченным с ftp.mips.com)

Цитата(amw @ Nov 24 2008, 15:11) *
А что говорит
Код
mipsisa32-elf-g++ -v

Код
mipsisa32-elf-g++ -v
[i]gcc version 2.96-mips3264-020217[/i]

Правда - чем он отличается от SDE - я не знаю..

Цитата(amw @ Nov 24 2008, 15:11) *
А это либо ключи выставлены неправильно, либо нехватает библиотеки libstdc++
Ее можно и самому скомпилить.

В в этом-то все трудности. Чего ребята там наворотили при построении загрузочного образа (который, кстати, транслируется как одно целое) - не знаю.. Но в том месте, где вываливает куча неопределенных ссылок - библиотеки НЕ подключаются... Хотя в проекте они указаны.. В общем - пока сижу с cfront-ом.. Потом буду звонить и спрашивать тупо..
amw
Цитата(Вовка_Бызов @ Nov 24 2008, 14:44) *
Дык я и не сомневаюсь - потому и пользовался им (кстати - скаченным с ftp.mips.com)
Код
mipsisa32-elf-g++ -v
[i]gcc version 2.96-mips3264-020217[/i]

2.96 !!!
Староват однако. И больше -v ничего не выводит?
Цитата
Правда - чем он отличается от SDE - я не знаю..
В в этом-то все трудности. Чего ребята там наворотили при построении загрузочного образа (который, кстати, транслируется как одно целое) - не знаю.. Но в том месте, где вываливает куча неопределенных ссылок - библиотеки НЕ подключаются... Хотя в проекте они указаны.. В общем - пока сижу с cfront-ом.. Потом буду звонить и спрашивать тупо..

Попробуйте перекомпилить sde-g++.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.