|
Компилятор С++ в С, Ищу программу! |
|
|
|
Nov 20 2008, 13:18
|
Частый гость
 
Группа: Свой
Сообщений: 182
Регистрация: 26-11-07
Из: Москва, Зеленоград
Пользователь №: 32 692

|
Есть у меня прога, написанная на С++. Достаточно мудреная и объемная.. И есть среда, в которой нет компилятора С++, но есть полноценный С. Не подскажет ли всемогущий олл, где взять кросс-компилятор для получения С-кода из С++. Платформа - близкая к линуксу - но не совсем.. Мне тут советовали какой-то comeau компилятор - но я просто не нашел, откуда его скачать...
|
|
|
|
|
 |
Ответов
|
Nov 21 2008, 10:34
|
Частый гость
 
Группа: Свой
Сообщений: 182
Регистрация: 26-11-07
Из: Москва, Зеленоград
Пользователь №: 32 692

|
Цитата(Harbour @ Nov 21 2008, 11:30)  кажись в этой oc2000 заявлена поддержка POSIX и X Window - скорей всего ребята тупо используют какой-нить вариант gcc. Я бы изучил ихний "компилятор только C" и для начала попытался бы заменить его на gcc. просто попробуйте собрать g++ на данной платформе Уже была попытка. Линкер ругается на некорректный тип объектного файла... Видимо - несоответствие платформы - я использовал g++ для интеля, а тут вроде как mips...
|
|
|
|
|
Nov 21 2008, 18:04
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(Вовка_Бызов @ Nov 21 2008, 12:34)  Уже была попытка. Линкер ругается на некорректный тип объектного файла... Видимо - несоответствие платформы - я использовал g++ для интеля, а тут вроде как mips... И каково имя файла самого компилятора? mips-elf-gcc? sde-gcc?
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Nov 24 2008, 11:27
|
Частый гость
 
Группа: Свой
Сообщений: 182
Регистрация: 26-11-07
Из: Москва, Зеленоград
Пользователь №: 32 692

|
Цитата(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-ы... В общем - еще до финала не дошел.. Хотя - надежды не исчезли  Цитата(sergeeff @ Nov 22 2008, 22:19)  Мне в последнее время все яснее становится, что надо самим себе ответить на вопрос:
1. Мы работаем, т.е. создаем современный промышленный продукт, продаваемый на рынке? 2. Или мы занимаемся наукоподобными изысками, характерными для младших научных сотрудников из "НИИЧАВО" середины 70-х годов прошлого века?
Найдешь для себя ответ, выберешь стиль профессиональной жизни и пути решения задач. Философия - вещь сильная.. Тока зачастую, живем мы в мире обстоятельств и выбираем пути под их неимоверною тяжестью...  Цитата(sergeeff @ Nov 22 2008, 15:17)  Для иллюстрации. Известная штука Singletone - класс, допускающий создание только одного экземпляра объекта. При этом невозможно создать копию такого объекта. И как вы мыслите себе такое реализовать на С? С выдачей адекватного кода ошибки на этапе компиляции? На самом деле - как я понял - компиляторы <С++ в С> используют язык С в качестве аналога некоего кросс-платформенного ассемблера. Т.е. код, генерируемый таким компилятором, НЕ является читаемым с точки зрения программиста. И все изыски С++ там реализуются программными средствами языка С.
|
|
|
|
|
Nov 24 2008, 12:11
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(Вовка_Бызов @ 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, 12:23
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
Сообщений в этой теме
Вовка_Бызов Компилятор С++ в С Nov 20 2008, 13:18 mdmitry Полноценной переделки не получится. Классы в струк... Nov 20 2008, 15:48 Вовка_Бызов Цитата(mdmitry @ Nov 20 2008, 18:48) Полн... Nov 20 2008, 17:03 sergeeff С++ можно рассматривать как расширение С. Соответс... Nov 20 2008, 17:10 Вовка_Бызов Цитата(sergeeff @ Nov 20 2008, 20:10) С++... Nov 20 2008, 19:10 haker_fox Цитата(sergeeff @ Nov 21 2008, 01:10) С++... Nov 21 2008, 04:16  Вовка_Бызов Цитата(haker_fox @ Nov 21 2008, 07:16) А ... Nov 21 2008, 06:48 sergeeff Я чего-то не понимаю. Ваши замечания с вопроситель... Nov 21 2008, 00:30 dxp Цитата(Вовка_Бызов @ Nov 20 2008, 19:18) ... Nov 21 2008, 06:49 gotty C++. Release 3.0.3, AT&T Bell Laboratories, Ma... Nov 21 2008, 07:41  scifi Цитата(Вовка_Бызов @ Nov 21 2008, 13:34) ... Nov 21 2008, 12:27     Вовка_Бызов Цитата(amw @ Nov 24 2008, 15:11) Я Вас уд... Nov 24 2008, 12:44      amw Цитата(Вовка_Бызов @ Nov 24 2008, 14:44) ... Nov 24 2008, 18:11  Harbour Цитата(Вовка_Бызов @ Nov 21 2008, 12:34) ... Nov 22 2008, 07:19 sergeeff Если речь идет о MIPS, то в MSVS2008 есть нормальн... Nov 21 2008, 09:53 axle Цитата(Вовка_Бызов @ Nov 20 2008, 20:18) ... Nov 21 2008, 22:28 sergeeff Цитата(axle @ Nov 22 2008, 02:28) Есть во... Nov 22 2008, 12:17  S.R. Цитата(sergeeff @ Nov 22 2008, 16:17) По ... Nov 22 2008, 15:11  vik0 Цитата(sergeeff @ Nov 22 2008, 14:17) А в... Nov 22 2008, 19:32 sergeeff Мне в последнее время все яснее становится, что на... Nov 22 2008, 19:19 sergeeff Каждый топчет свою дорогу в этой жизни... Nov 23 2008, 00:52
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|