Компиляция под x64
Модератор: Модераторы
-
alisichkin
- незнакомец
- Сообщения: 8
- Зарегистрирован: 21.01.2008 17:02:49
Компиляция под x64
Добрый день!
При попытке скомпилировать 64 битную версию программы из под 32х разрядной ОС (Win XP) получаю ошибку:
Error: resource compiler not found, switching to external mode
Строка копиляции:
c:\lazarus\fpc\2.2.0\bin\i386-win32\ppcrossx64.exe -Rintel -S2cdgi -OG1 -Xs -vewhi -l -oxp_crypt.dll xp_crypt.lpr
в xp_crypt.lpr есть строчка: {$R ....}
Если ее убрать, то все проходит...
Есть тестовый сервер x64, где стоит lazarus for x64. На нем все компилиться на ура.
Почему ppcrossx64.exe не использует windres.exe для компиляции ресурсов? Или ему нужен другой ресурс компиллер?
При попытке скомпилировать 64 битную версию программы из под 32х разрядной ОС (Win XP) получаю ошибку:
Error: resource compiler not found, switching to external mode
Строка копиляции:
c:\lazarus\fpc\2.2.0\bin\i386-win32\ppcrossx64.exe -Rintel -S2cdgi -OG1 -Xs -vewhi -l -oxp_crypt.dll xp_crypt.lpr
в xp_crypt.lpr есть строчка: {$R ....}
Если ее убрать, то все проходит...
Есть тестовый сервер x64, где стоит lazarus for x64. На нем все компилиться на ура.
Почему ppcrossx64.exe не использует windres.exe для компиляции ресурсов? Или ему нужен другой ресурс компиллер?
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
gorc.exe нужен (http://www.godevtool.com). windres не умеет генерить 64-битные объектники.
-
alisichkin
- незнакомец
- Сообщения: 8
- Зарегистрирован: 21.01.2008 17:02:49
-
alisichkin
- незнакомец
- Сообщения: 8
- Зарегистрирован: 21.01.2008 17:02:49
To: Sergei I. Gorelkin
Правильно ли я делаю?
make64.bat:
make32.bat:
xp_crypt.lpr:
Правильно ли я делаю?
make64.bat:
Код: Выделить всё
del *.o /q
del *.ppu /q
c:\lazarus\fpc\2.2.0\bin\x86_64-win64\GoRC.exe /machine x64 /fo fpc-res.obj fpc-res.res exmess.rc
c:\lazarus\fpc\2.2.0\bin\x86_64-win64\ppcrossx64.exe -Rintel -S2cdgi -OG1 -Xs -ve -l -oxp_crypt.dll xp_crypt.lpr
pausemake32.bat:
Код: Выделить всё
del *.o /q
del *.ppu /q
c:\lazarus\fpc\2.2.0\bin\i386-win32\GoRC.exe /fo fpc-res.obj fpc-res.res exmess.rc
c:\lazarus\fpc\2.2.0\bin\i386-win32\fpc.exe -Rintel -S2cdgi -OG1 -Xs -ve -l -oxp_crypt.dll xp_crypt.lpr
pausexp_crypt.lpr:
Код: Выделить всё
library xp_crypt;
//{$R 'exmess.res' 'exmess.rc'}
{$L fpc-res.obj}- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
Жесть.....
1) gorc.exe подхватываться должен. Если не подхватывается - скорее всего баг. Узнать, что вызывается на самом деле, можно с ключом командной строки -va.
2) Обработка ресурсов проходит в две стадии. Сначала .rc компилируются в .res, потом все .res в проекте сливаются в один fpc-res.res, который затем преобразуется в .obj. Поэтому имя 'fpc-res' в батниках лучше заменить на что-то другое.
3) Компилятор вызывает gorc.exe так (вместо $RC, $RES, $OBJ подставляются соотв файлы):
4) У компилятора есть ключи -FC и -FR, которые позволяют указать "компилятор" и "линкер" ресурсов в явном виде. Правда, были ли они в 2.2.0 или добавились позже - я не знаю.
5) Насчет конструкции {$R 'exmess.res' 'exmess.rc'} не уверен, поддерживается ли она. Но по отдельности {$R 'exmess.res'} и {$R 'exmess.rc'} должны работать.
1) gorc.exe подхватываться должен. Если не подхватывается - скорее всего баг. Узнать, что вызывается на самом деле, можно с ключом командной строки -va.
2) Обработка ресурсов проходит в две стадии. Сначала .rc компилируются в .res, потом все .res в проекте сливаются в один fpc-res.res, который затем преобразуется в .obj. Поэтому имя 'fpc-res' в батниках лучше заменить на что-то другое.
3) Компилятор вызывает gorc.exe так (вместо $RC, $RES, $OBJ подставляются соотв файлы):
Код: Выделить всё
gorc.exe /machine x64 /nw /ni /r /fo $RES $RC'
gorc.exe /machine x64 /nw /ni /o /fo $OBJ $RES
4) У компилятора есть ключи -FC и -FR, которые позволяют указать "компилятор" и "линкер" ресурсов в явном виде. Правда, были ли они в 2.2.0 или добавились позже - я не знаю.
5) Насчет конструкции {$R 'exmess.res' 'exmess.rc'} не уверен, поддерживается ли она. Но по отдельности {$R 'exmess.res'} и {$R 'exmess.rc'} должны работать.
- Attid
- долгожитель
- Сообщения: 2589
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
а чтоб не удалять
можно билдить с ключем -B но это тоже не красиво лучше собирать в разных папках к примеру
ускорит время сбора =)
Код: Выделить всё
del *.o /q
del *.ppu /q можно билдить с ключем -B но это тоже не красиво лучше собирать в разных папках к примеру
Код: Выделить всё
-FUwin32/
-FUwin64/ускорит время сбора =)
-
alisichkin
- незнакомец
- Сообщения: 8
- Зарегистрирован: 21.01.2008 17:02:49
То: Attid
Спасибо, добавил ключ –FU. Так действительно более кошерно :)
To: Sergei I. Gorelkin
Спасибо за такой развернутый ответ, но...
1) gorc.exe автоматически не подхватывается. Запустив ppcrossx64.exe с ключом –va ничего не нашел (результат работы ppcrossx64.exe –va приведу далее).
2) В проекте только один res файл. Ресурс MESSAGETABLE для правильного отображения сообщений в EventLog NT от приложения. Поэтому, может быть, это волюнтаризм, но для меня имя 'fpc-res' вполне подходит.
3) Зачем две раза вызывать gorc? Если он сам пишет
If the inputfile is RC, then by default, both RES and OBJ files are created.
4) У меня вроде последняя версия FPC – 2.2.0, о более новых версиях я не слышал.
ppcrossx64.exe имеет ключи
-Fc<x> sets input codepage to <x>
-Fr<x> load error message file <x>
Но это явно не то…
5) {$R 'exmess.res' 'exmess.rc'} – это моя ошибка. Нужно либо 'exmess.res' либо 'exmess.rc', но что интересно, Delphi, Lazarus 0.9.24 для Win32 на WinXP(32bit), Lazarus 0.9.24 для Win64 на Win2003(64bit) успешно компилируют данную сточку.
В принципе, главного я достиг – я могу компилировать свой проект, но интересно, как правильно настроить FPC, что бы он сам подхватывал gorc.
результат работы ppcrossx64.exe –va
Спасибо, добавил ключ –FU. Так действительно более кошерно :)
To: Sergei I. Gorelkin
Спасибо за такой развернутый ответ, но...
1) gorc.exe автоматически не подхватывается. Запустив ppcrossx64.exe с ключом –va ничего не нашел (результат работы ppcrossx64.exe –va приведу далее).
2) В проекте только один res файл. Ресурс MESSAGETABLE для правильного отображения сообщений в EventLog NT от приложения. Поэтому, может быть, это волюнтаризм, но для меня имя 'fpc-res' вполне подходит.
3) Зачем две раза вызывать gorc? Если он сам пишет
If the inputfile is RC, then by default, both RES and OBJ files are created.
4) У меня вроде последняя версия FPC – 2.2.0, о более новых версиях я не слышал.
ppcrossx64.exe имеет ключи
-Fc<x> sets input codepage to <x>
-Fr<x> load error message file <x>
Но это явно не то…
5) {$R 'exmess.res' 'exmess.rc'} – это моя ошибка. Нужно либо 'exmess.res' либо 'exmess.rc', но что интересно, Delphi, Lazarus 0.9.24 для Win32 на WinXP(32bit), Lazarus 0.9.24 для Win64 на Win2003(64bit) успешно компилируют данную сточку.
В принципе, главного я достиг – я могу компилировать свой проект, но интересно, как правильно настроить FPC, что бы он сам подхватывал gorc.
результат работы ppcrossx64.exe –va
Код: Выделить всё
[0.000] Macro defined: WIN64
[0.000] Macro defined: FPC
[0.000] Macro defined: VER2
[0.000] Macro defined: VER2_2
[0.000] Macro defined: VER2_2_0
[0.000] Macro defined: FPC_DARWIN_PASCALMAIN
[0.000] Macro defined: FPC_DARWIN_JMP_MAIN
[0.000] Macro defined: COMPPROCINLINEFIXED
[0.000] Macro defined: PARAOUTFILE
[0.000] Macro defined: RESSTRSECTIONS
[0.000] Macro defined: FPC_HASFIXED64BITVARIANT
[0.000] Macro defined: FPC_HASINTERNALOLEVARIANT2VARIANTCAST
[0.000] Macro defined: FPC_HAS_VARSETS
[0.000] Macro defined: FPC_HAS_VALGRINDBOOL
[0.000] Macro defined: FPC_HAS_STR_CURRENCY
[0.000] Macro defined: FPC_REAL2REAL_FIXED
[0.000] Macro defined: FPC_STRTOCHARARRAYPROC
[0.000] Macro defined: FPC_SUPPORTS_UNALIGNED
[0.000] Macro defined: INTERNAL_BACKTRACE
[0.000] Macro defined: STR_CONCAT_PROCS
[0.000] Macro defined: REGCALL
[0.000] Macro defined: FPC_HAS_FEATURE_SUPPORT
[0.000] Macro defined: CPUX86_64
[0.000] Macro defined: CPUAMD64
[0.000] Macro defined: CPU64
[0.000] Macro defined: FPC_CURRENCY_IS_INT64
[0.000] Macro defined: FPC_COMP_IS_INT64
[0.000] Macro defined: FPC_HAS_TYPE_DOUBLE
[0.000] Macro defined: FPC_HAS_TYPE_SINGLE
[0.000] Macro defined: FPC_CROSSCOMPILING
[0.000] Macro defined: FPC_CPUCROSSCOMPILING
[0.000] Macro defined: FPC_WINLIKEWIDESTRING
[0.000] Reading options from file fpc.cfg
[0.000] Start of reading config file fpc.cfg
[0.000] interpreting file option "#"
[0.000] interpreting file option "# Config file generated by fpcmkcfg on 26.12.2007 - 10:54:04"
[0.000] interpreting file option "# Example fpc.cfg for Free Pascal Compiler"
[0.000] interpreting file option "#"
[0.000] interpreting file option "# ----------------------"
[0.000] interpreting file option "# Defines (preprocessor)"
[0.000] interpreting file option "# ----------------------"
[0.000] interpreting file option "#"
[0.000] interpreting file option "# nested #IFNDEF, #IFDEF, #ENDIF, #ELSE, #DEFINE, #UNDEF are allowed"
[0.000] interpreting file option "#"
[0.000] interpreting file option "# -d is the same as #DEFINE"
[0.000] interpreting file option "# -u is the same as #UNDEF"
[0.000] interpreting file option "#"
[0.000] interpreting file option "#"
[0.000] interpreting file option "# Some examples (for switches see below, and the -? helppages)"
[0.000] interpreting file option "#"
[0.000] interpreting file option "# Try compiling with the -dRELEASE or -dDEBUG on the commandline"
[0.000] interpreting file option "#"
[0.000] interpreting file option "# For a release compile with optimizes and strip debuginfo"
[0.000] interpreting file option "#IFDEF RELEASE"
[0.000] interpreting file option "#WRITE Compiling Release Version"
[0.000] interpreting file option "#ENDIF"
[0.000] interpreting file option "# For a debug version compile with debuginfo and all codegeneration checks on"
[0.000] interpreting file option "#IFDEF DEBUG"
[0.000] interpreting file option "#WRITE Compiling Debug Version"
[0.000] interpreting file option "#ENDIF"
[0.000] interpreting file option "# ----------------"
[0.000] interpreting file option "# Parsing switches"
[0.000] interpreting file option "# ----------------"
[0.000] interpreting file option "# Pascal language mode"
[0.000] interpreting file option "# -Mfpc free pascal dialect (default)"
[0.000] interpreting file option "# -Mobjfpc switch some Delphi 2 extensions on"
[0.000] interpreting file option "# -Mdelphi tries to be Delphi compatible"
[0.000] interpreting file option "# -Mtp tries to be TP/BP 7.0 compatible"
[0.000] interpreting file option "# -Mgpc tries to be gpc compatible"
[0.000] interpreting file option "# -Mmacpas tries to be compatible to the macintosh pascal dialects"
[0.000] interpreting file option "#"
[0.000] interpreting file option "# Turn on Object Pascal extensions by default"
[0.000] interpreting file option "#-Mobjfpc"
[0.000] interpreting file option "# Assembler reader mode"
[0.000] interpreting file option "# -Rdefault use default assembler"
[0.000] interpreting file option "# -Ratt read AT&T style assembler"
[0.000] interpreting file option "# -Rintel read Intel style assembler"
[0.000] interpreting file option "#"
[0.000] interpreting file option "# All assembler blocks are AT&T styled by default"
[0.000] interpreting file option "#-Ratt"
[0.000] interpreting file option "# Semantic checking"
[0.000] interpreting file option "# -S2 same as -Mobjfpc"
[0.000] interpreting file option "# -Sc supports operators like C (*=,+=,/= and -=)"
[0.000] interpreting file option "# -Sa include assertion code."
[0.000] interpreting file option "# -Sd same as -Mdelphi"
[0.000] interpreting file option "# -Se<x> compiler stops after the <x> errors (default is 1)"
[0.000] interpreting file option "# -Sg allow LABEL and GOTO"
[0.000] interpreting file option "# -Sh Use ansistrings"
[0.000] interpreting file option "# -Si support C++ styled INLINE"
[0.000] interpreting file option "# -SI<x> set interface style to <x>"
[0.000] interpreting file option "# -SIcomCOM compatible interface (default)"
[0.000] interpreting file option "# -SIcorbaCORBA compatible interface"
[0.000] interpreting file option "# -Sm support macros like C (global)"
[0.000] interpreting file option "# -So same as -Mtp"
[0.000] interpreting file option "# -Sp same as -Mgpc"
[0.000] interpreting file option "# -Ss constructor name must be init (destructor must be done)"
[0.000] interpreting file option "# -St allow static keyword in objects"
[0.000] interpreting file option "#"
[0.000] interpreting file option "# Allow goto, inline, C-operators, C-vars"
[0.000] Handling option "-Sgic"
[0.000] interpreting option "-Sgic"
[0.000] interpreting file option "# ---------------"
[0.000] interpreting file option "# Code generation"
[0.000] interpreting file option "# ---------------"
[0.000] interpreting file option "# Uncomment the next line if you always want static/dynamic units by default"
[0.000] interpreting file option "# (can be overruled with -CD, -CS at the commandline)"
[0.000] interpreting file option "#-CS"
[0.000] interpreting file option "#-CD"
[0.000] interpreting file option "# Set the default heapsize to 8Mb"
[0.000] interpreting file option "#-Ch8000000"
[0.000] interpreting file option "# Set default codegeneration checks (iocheck, overflow, range, stack)"
[0.000] interpreting file option "#-Ci"
[0.000] interpreting file option "#-Co"
[0.000] interpreting file option "#-Cr"
[0.000] interpreting file option "#-Ct"
[0.000] interpreting file option "# Optimizer switches for i386 compiler"
[0.000] interpreting file option "# -Os generate smaller code"
[0.000] interpreting file option "# -O1 level 1 optimizations (quick optimizations)"
[0.000] interpreting file option "# -O2 level 2 optimizations (-O1 + slower optimizations)"
[0.000] interpreting file option "# -O3 level 3 optimizations (same as -O2u)"
[0.000] interpreting file option "# -Oa=N set alignment to N"
[0.000] interpreting file option "# -OoX switch on optimalization X."
[0.000] interpreting file option "# -OoNOX switch off optimalization X."
[0.000] interpreting file option "# X is one of REGVAR UNCERTAIN STACKFRAME PEEPHOLE ASMCSE LOOPUNROLL"
[0.000] interpreting file option "# -OpCPU set target processor."
[0.000] interpreting file option "# CPU is one of 386, PENTIUM, PENTIUM2, PENTIUM3, PENTIUM4, PENTIUMM"
[0.000] interpreting file option "# -----------------------"
[0.000] interpreting file option "# Set Filenames and Paths"
[0.000] interpreting file option "# -----------------------"
[0.000] interpreting file option "# Both slashes and backslashes are allowed in paths"
[0.000] interpreting file option "# path to the messagefile, not necessary anymore but can be used to override"
[0.000] interpreting file option "# the default language"
[0.000] interpreting file option "#-Frc:\lazarus\fpc\2.2.0/msg/errore.msg"
[0.000] interpreting file option "#-Frc:\lazarus\fpc\2.2.0/msg/errorn.msg"
[0.000] interpreting file option "#-Frc:\lazarus\fpc\2.2.0/msg/errores.msg"
[0.000] interpreting file option "#-Frc:\lazarus\fpc\2.2.0/msg/errord.msg"
[0.000] interpreting file option "#-Frc:\lazarus\fpc\2.2.0/msg/errorr.msg"
[0.000] interpreting file option "# path to the gcclib"
[0.000] interpreting file option "#-Flc:\lazarus\fpc\2.2.0/lib"
[0.000] interpreting file option "# searchpath for includefiles"
[0.000] interpreting file option "#-Fi/pp/inc;/pp/rtl/inc"
[0.000] interpreting file option "# searchpath for includefiles"
[0.000] interpreting file option "# release them only if you know what you do"
[0.000] interpreting file option "# because this could cause a rebuild of the runtime library"
[0.000] interpreting file option "# if you tell them compiler/ide to build the project (FK)"
[0.000] interpreting file option "#-Fic:\lazarus\fpc\2.2.0/source/rtl/inc;c:\lazarus\fpc\2.2.0/source/rtl/i386"
[0.000] interpreting file option "# searchpath for objectfiles"
[0.000] interpreting file option "#-Foc:\lazarus\fpc\2.2.0/source/rtl/inc;c:\lazarus\fpc\2.2.0/source/rtl/i386"
[0.000] interpreting file option "# searchpath for units and other system dependent things"
[0.000] Handling option "-Fuc:\lazarus\fpc\2.2.0/units/x86_64-win64/"
[0.000] interpreting option "-Fuc:\lazarus\fpc\2.2.0/units/x86_64-win64/"
[0.000] Handling option "-Fuc:\lazarus\fpc\2.2.0/units/x86_64-win64/*"
[0.000] interpreting option "-Fuc:\lazarus\fpc\2.2.0/units/x86_64-win64/*"
[0.000] Handling option "-Fuc:\lazarus\fpc\2.2.0/units/x86_64-win64/rtl"
[0.000] interpreting option "-Fuc:\lazarus\fpc\2.2.0/units/x86_64-win64/rtl"
[0.000] interpreting file option "# searchpath for libraries"
[0.000] interpreting file option "#-Flc:\lazarus\fpc\2.2.0/lib"
[0.000] interpreting file option "#-Fl/lib;/usr/lib"
[0.000] interpreting file option "# searchpath for tools"
[0.000] Handling option "-FDc:\lazarus\fpc\2.2.0/bin/x86_64-win64"
[0.000] interpreting option "-FDc:\lazarus\fpc\2.2.0/bin/x86_64-win64"
[0.000] interpreting file option "# binutils prefix for cross compiling"
[0.000] interpreting file option "#IFDEF FPC_CROSSCOMPILING"
[0.000] Handling option "-XPx86_64-win64-"
[0.000] interpreting option "-XPx86_64-win64-"
[0.000] interpreting file option "#ENDIF"
[0.000] interpreting file option "# -------------"
[0.000] interpreting file option "# Linking"
[0.000] interpreting file option "# -------------"
[0.000] interpreting file option "# generate always debugging information for GDB (slows down the compiling"
[0.000] interpreting file option "# process)"
[0.000] interpreting file option "# -gc generate checks for pointers"
[0.000] interpreting file option "# -gd use dbx"
[0.000] interpreting file option "# -gg use gsym"
[0.000] interpreting file option "# -gh use heap trace unit (for memory leak debugging)"
[0.000] interpreting file option "# -gl use line info unit to show more info for backtraces"
[0.000] interpreting file option "# -gv generates programs tracable with valgrind"
[0.000] interpreting file option "# -gw generate dwarf debugging info"
[0.000] interpreting file option "#"
[0.000] interpreting file option "# Enable debuginfo and use the line info unit by default"
[0.000] interpreting file option "#-gl"
[0.000] interpreting file option "# always pass an option to the linker"
[0.000] interpreting file option "#-k-s"
[0.000] interpreting file option "# Always strip debuginfo from the executable"
[0.000] Handling option "-Xs"
[0.000] interpreting option "-Xs"
[0.000] interpreting file option "# -------------"
[0.000] interpreting file option "# Miscellaneous"
[0.000] interpreting file option "# -------------"
[0.000] interpreting file option "# Write always a nice FPC logo ;)"
[0.000] Handling option "-l"
[0.000] interpreting option "-l"
[0.000] interpreting file option "# Verbosity"
[0.000] interpreting file option "# e : Show errors (default) d : Show debug info"
[0.000] interpreting file option "# w : Show warnings u : Show unit info"
[0.000] interpreting file option "# n : Show notes t : Show tried/used files"
[0.000] interpreting file option "# h : Show hints m : Show defined macros"
[0.000] interpreting file option "# i : Show general info p : Show compiled procedures"
[0.000] interpreting file option "# l : Show linenumbers c : Show conditionals"
[0.000] interpreting file option "# a : Show everything 0 : Show nothing (except errors)"
[0.000] interpreting file option "# b : Show all procedure r : Rhide/GCC compatibility mode"
[0.000] interpreting file option "# declarations if an error x : Executable info (Win32 only)"
[0.000] interpreting file option "# occurs"
[0.000] interpreting file option "#"
[0.000] interpreting file option "# Display Info, Warnings, Notes and Hints"
[0.000] Handling option "-viwn"
[0.000] interpreting option "-viwn"
[0.000] interpreting file option "# If you don't want so much verbosity use"
[0.000] interpreting file option "#-vw"
[0.000] End of reading config file fpc.cfg
[0.000] Handling option "-va"
[0.000] interpreting option "-va"
[0.000] Free Pascal Compiler version 2.2.0 [2007/09/09] for x86_64
[0.000] Copyright (c) 1993-2007 by Florian Klaempfl
[0.000] Macro defined: MSWINDOWS
[0.000] Macro defined: WINDOWS
[0.000] Macro defined: ENDIAN_LITTLE
[0.000] Macro defined: FPC_LITTLE_ENDIAN
[0.000] No source file name in command line
[0.000] Compilation aborted- Attid
- долгожитель
- Сообщения: 2589
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
alisichkin
опиши процес создания в 10 строчек , в фак повесим, помню там что-то давольно просто было, но в базе знаний не помешает.
2) В проекте только один res файл. Ресурс MESSAGETABLE для правильного отображения сообщений в EventLog NT от приложения. Поэтому, может быть, это волюнтаризм, но для меня имя 'fpc-res' вполне подходит.
опиши процес создания в 10 строчек , в фак повесим, помню там что-то давольно просто было, но в базе знаний не помешает.
-
alisichkin
- незнакомец
- Сообщения: 8
- Зарегистрирован: 21.01.2008 17:02:49
To: Юра
Спасибо – переименование в x86_64-win64-gorc.exe помогло (по-моему, чудовищное название)
To: ALL
Спасибо за участие в обсуждении – все получилось.
Порядок сборки x64 приложений из под x32 Win ОС:
1. Инсталлируем FPC и утилиты для for Win32 (ftp://ftp.chg.ru/pub/lang/pascal/fpc/di ... -win32.exe);
2. Инсталлируем кросс-компиллер win32 to win64 и исходники 64bit библиотек (ftp://ftp.chg.ru/pub/lang/pascal/fpc/di ... -win64.exe)
3. Помещаем в папку ../fpc/2.2.0/i386-win32 файл GoRC.exe под именем x86_64-win64-gorc.exe (Я взял компилятор ресурсов GoRC.exe из инсталляции Lazarus 0.9.24 for win64)
4. Для раздельного хранения 32 и 64 битных компилированных модулей, в папке проекта создать подпапки Win32 и Win64
5. Создание пакетных файлов для простоты вызова компилятора.
make32.bat
make64.bat
Для разных проектов параметры компилятора будут отличаться.
У меня проект импортирован из Delphi –Sd, имеются ассемблерные вставки –Rintel и т.д.
Спасибо – переименование в x86_64-win64-gorc.exe помогло (по-моему, чудовищное название)
To: ALL
Спасибо за участие в обсуждении – все получилось.
Порядок сборки x64 приложений из под x32 Win ОС:
1. Инсталлируем FPC и утилиты для for Win32 (ftp://ftp.chg.ru/pub/lang/pascal/fpc/di ... -win32.exe);
2. Инсталлируем кросс-компиллер win32 to win64 и исходники 64bit библиотек (ftp://ftp.chg.ru/pub/lang/pascal/fpc/di ... -win64.exe)
3. Помещаем в папку ../fpc/2.2.0/i386-win32 файл GoRC.exe под именем x86_64-win64-gorc.exe (Я взял компилятор ресурсов GoRC.exe из инсталляции Lazarus 0.9.24 for win64)
4. Для раздельного хранения 32 и 64 битных компилированных модулей, в папке проекта создать подпапки Win32 и Win64
5. Создание пакетных файлов для простоты вызова компилятора.
make32.bat
Код: Выделить всё
c:\lazarus\fpc\2.2.0\bin\i386-win32\fpc.exe -Rintel -S2cdgi -OG1 -Xs -ve -l -FUwin32/ -oxp_crypt.dll xp_crypt.lpr
pausemake64.bat
Код: Выделить всё
c:\lazarus\fpc\2.2.0\bin\i386-win32\ppcrossx64.exe -Rintel -S2cdgi -OG1 -Xs -ve -l -FUwin64/ -oxp_crypt.dll xp_crypt.lpr
pauseДля разных проектов параметры компилятора будут отличаться.
У меня проект импортирован из Delphi –Sd, имеются ассемблерные вставки –Rintel и т.д.
-
alisichkin
- незнакомец
- Сообщения: 8
- Зарегистрирован: 21.01.2008 17:02:49
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
В fpc.cfg можно записать все ключи командной строки (-Rintel -S2cdgi и т.д.), и потом при каждой компиляции уже не нужно будет их указывать. Компилятором ресурсов оттуда можно рулить с помощью упомянутых -XP (который как раз задает этот страшный префикс x86_64-win64), а также -FC и -FR (получается, что они действительно есть только в версии 2.3.1).
Странно в этой истории одно - почему в поставку кросс-компилятора не включен правильный gorc.exe?
Странно в этой истории одно - почему в поставку кросс-компилятора не включен правильный gorc.exe?
