Компиляция с DMD на 64-битной Linux или связывание с 32-битными объектными файлами - PullRequest
2 голосов
/ 13 мая 2009

Каков наилучший способ компиляции программ с DMD на 64-битной машине? Не нужно компилировать в 64-битный код. Я знаю о GDC, но хочу работать и с D2. Также есть chroot, но я надеюсь на более простой способ.

Проблема не в компиляции, а в компоновке. DMD призывает GCC установить связь с системными библиотеками. Могу ли я получить DMD для связи GCC с 32-битной библиотекой? Или как бы я сделал это вручную?

У меня уже установлены библиотеки ia32, поэтому я могу использовать DMD.

1 Ответ

5 голосов
/ 13 мая 2009

Попросить GCC выполнить 32-битное соединение, передав ему флаг '-m32'.

Похоже, что DMD не вызывает gcc для выполнения ссылки, а скорее вызывает ld напрямую. Эквивалентный ld переключатель - '-melf_i386', и, очевидно, способ заставить DMD передать эту опцию компоновщику - с флагом '-L-melf_i386'.

Обратите внимание, что многие системы разделяют библиотеки времени выполнения и библиотеки разработки. 32-битные пакеты времени выполнения почти всегда устанавливаются по умолчанию, но 32-битные пакеты разработки могут не быть.

Для создания 32-битных программ вам потребуется разработка 32-битных пакетов. Тот факт, что 32-битный DMD может работать, сам по себе не доказывает, что у вас есть все 32-битные библиотеки, необходимые для создания 32-битных программ.

...