Невозможно запустить двоичный файл Windows, скомпилированный с помощью clang / lld / mingw - PullRequest
0 голосов
/ 27 января 2019

Я скачал и установил clang на Windows 10 из http://releases.llvm.org/download.html и mingw из https://sourceforge.net/projects/mingw-w64/

Я пытаюсь скомпилировать очень простую программу на C, используя clang / lld / mingw:

int main(int argc, char* argv[argc + 1])
{
  return 0;
}

Для компиляции я вызываю:

clang.exe -target x86_64-windows-gnu -fuse-ld=lld.exe -g -gcodeview -Wl,/debug,/pdb:example.pdb example.c -o example.exe

Это создает исполняемый файл, который дает сбой при запуске в mainCRTStartup (__security_init_cookie, если быть точным).

Тем не менее, запуск с ld по умолчанию из binutils успешен:

clang.exe -target x86_64-windows-gnu example.c -o example.exe

Обратите внимание, что я хочу использовать заголовки mingw, а не msvc.

В общем, я пробовал:

  • x86_64-8.1.0-posix-seh-rt_v6-rev0
  • x86_64-7.3.0-posix-seh-rt_v5-rev0
  • x86_64-8.1.0-win32-seh-rt_v6-rev0
  • x86_64-8.1.0-win32-sjlj-rt_v6-rev0

без какой-либо удачи в создании функциональной программы.

Так что мне интересно, есть ли что-то очевидное, что я здесь делаю неправильно?

РЕДАКТИРОВАТЬ : Я также пытался с msys2 безрезультатно.В частности:

pacman -S mingw-w64-x86_64-clang mingw-w64-x86_64-lld

1 Ответ

0 голосов
/ 08 февраля 2019

Согласно https://bugs.llvm.org/show_bug.cgi?id=40568

Связывание с библиотеками импорта mingw из обычной установки mingw - это новая функция, впервые представленная в LLD 8.

Если не требуетсяскомпилируйте предварительную версию lld, нужно дождаться бинарного выпуска llvm 8.0.0.Надеюсь, это произойдет где-то в марте.

...