есть такой совершенно простой код: Код (Text): extern "C" int start() { return 0; } хочу из него собрать сырой бинарь 32-битный (raw binary, то есть просто код, без всяких заголовков pe/elf формата), использую для этого ключи компиляции: Код (Text): -Os -O3 -Wall -std=c++0x -nostdinc -fno-exceptions -fno-rtti -masm=intel -flto -fconstexpr-depth=1024 -m32 -mno-stack-arg-probe и ключи линкера (пускаю линкер через g++): Код (Text): -s -nostdlib -O3 -Os -flto -Wl,--oformat,binary -O2 -m32 ожидаю при этом получить сырой бинарь, а получаю: Код (Text): ld.exe: cannot perform PE operations on non PE output file '<имя_выходного_файла>' подскажите пожалуйста, где я ошибся? ЗЫ пробовал сделать через скрипт линкера, но возникает та же ошибка...
видимо ld не хочет сырые бинарники собирать на винде... пытаюсь сделать через objcopy в постбилд ивенте: Код (Text): objcopy ./Output/Test32.exe -O ./Output/Test32.bin но вылезает: Код (Text): objcopy:./Output/sta03172: Invalid bfd target это видимо GNU BDF (Binary File Descriptor library) не понимает пути к файлам? как пофиксить?)
Если на винде почему не visualstudio: Код (Text): vcvarsall.bat cl anycode.cpp /c /nologo /GS- /GR- /TP /Gm /Zi link anycode.obj /ENTRY:main /RELEASE /OUT:"anycode.bin" /SUBSYSTEM:NATIVE /NODEFAULTLIB /MACHINE:X86 /BASE:0x0 /MERGE:.text=.data /MERGE:.rdata=.data /SECTION:.text,EWR objcopy anycode.bin -I pe-i386 -O binary objcopy из GNU. должно быть в PATH и vcvarsall.bat тоже.
Rel Ulink, вроде как такое умеет - для 16 бит точно. Путь в кавычки "/folder1/folder2/somefile.ext" - иногда помогает ))))
Rel Psionic Дело не в кавычках. Попробуй рецепт отсюда http://www.rsdn.ru/forum/cpp.applied/1594273.flat.aspx