2016-06-21 2 views
1

Как скомпилировать и скомпоновать 64 разрядную программу сборки Windows, в LinuxCross Compile Windows 64 Bit Сборка на Linux 64 бит

Я уже знаю, запустить

nasm -f win64 generic_assembly.asm -o generic_output 

Но после того, что я не могу просто запустить

ld generic_output -o generic_executable.exe 

и я попытался с помощью GoLink.exe с вином, но я до сих пор скептически ли это на самом деле работает

Может быть, я могу использовать Mingw-w64, но у меня нет подсказки о том, как это будет работать

Любая помощь будет оценена Я в основном ищу только компоновщик, который я могу запускать из linux, но в противном случае компоновщик для Windows также быть оцененным.

+4

Вам понадобится перекрестный компилятор окон, такой как MinGW. У вашего дистрибутива уже может быть пакет с готовым пакетом (вы просто установите его через менеджер пакетов). После его установки вы можете запустить _LD_ из кросс-компилятора - скорее всего, он будет называться 'x86_64-w64-mingw32-ld', кросс-компилятор GCC будет называться' x86_64-w64-mingw32-gcc' и т. Д. Это соглашение об именах в моей системе Debian Jessie. –

+1

Yup, я бы порекомендовал просто использовать 'x86_64-w64-mingw32-gcc', чтобы связать файлы .obj от nasm в исполняемые файлы, если есть что-то неочевидное' ld' arg, которое необходимо. (используйте '-статический' и/или' -nostdlib' соответственно). –

ответ

2

Чтобы связать объекты для 64-битной Windows от Linux, установите x86_64-w64-mingw32-gcc. Для этого выполните следующие шаги:

  • Перейдите на страницу here и загрузите последнюю версию.
  • Распаковать архив в/Opt/mingw64
  • Затем сделайте sudo ln -s /opt/mingw64/bin/x86_64-w64-mingw32-g++ /usr/bin/mingw64-g++

Теперь вы установили кросс-компилятор для Windows 64 бит, если вы хотите 32 битную версию сделать то же самое, но использовать this link.