Использование компоновщика llvm (lld) с mingw - PullRequest
2 голосов
/ 24 апреля 2019

Я хотел бы иметь полный набор инструментов разработки для Win32 без Microsoft SDK. mingw64 работает, но его компоновщик работает очень медленно. Как альтернатива, я пытаюсь использовать Clang для Windows. Я могу заставить работать clang 7.0.1 (но не 8.0.0) с заголовочными файлами / библиотеками mingw, но только с помощью mdw ld.exe. Если я принудительно использую ldd.exe (-fuse-ld = lld), все компилируется и связывается нормально, но приложение сразу падает при запуске. Могу ли я здесь что-нибудь сделать, например изменить что-то в командной строке?

Вот так выглядит командная строка и --verbose для шага ссылки:

Linking...
clang++ -static -o "C:\upp\out\MyApps\CLANG.Debug.Debug_Full\main.exe"
    -ggdb -L"C:\upp\bin/mingw64/64/x86_64-w64-mingw32/lib"
    -L"C:\uppbin/mingw64/64/opt/lib" -L"C:\upp\bin/SDL2/lib/x64" 
    -L"C:\upp\bin/pgsql/x64/bin"
    -L"C:\upp\bin/mysql/lib64"
    -Wl,--stack,20000000 --verbose -target x86_64-pc-windows-gnu
    -fuse-ld=lld
    "C:/upp/out/MyApps/main/CLANG.Debug.Debug_Full.Main\main.o"
    -Wl,--start-group  -Wl,--end-group
clang version 7.0.1 (tags/RELEASE_701/final)
Target: x86_64-pc-windows-gnu
Thread model: posix
InstalledDir: C:\xxx\LLVM2\bin
 "C:\\xxx\\LLVM2\\bin\\ld.lld" -m i386pep -Bstatic
 -o "C:\\upp\\out\\MyApps\\CLANG.Debug.Debug_Full\\main.exe"
 "C:\\upp\\bin\\mingw64\\64\\x86_64-w64-mingw32\\lib\\crt2.o"
 "C:\\upp\\bin\\mingw64\\64\\lib\\gcc\\x86_64-w64-mingw32\\8.1.0\\crtbegin.o"    
 "-LC:\\upp\\bin/mingw64/64/x86_64-w64-mingw32/lib"
 "-LC:\\upp\\bin/mingw64/64/opt/lib"
 "-LC:\\upp\\bin/SDL2/lib/x64" "-LC:\\upp\\bin/pgsql/x64/bin"
 "-LC:\\upp\\bin/mysql/lib64"
 "-LC:\\upp\\bin\\mingw64\\64\\lib\\gcc\\x86_64-w64-mingw32\\8.1.0" 
 "-LC:\\upp\\bin\\mingw64\\64\\x86_64-w64-mingw32\\lib"
 "-LC:\\upp\\bin\\mingw64\\64\\lib"
 "-LC:\\upp\\bin\\mingw64\\64\\x86_64-w64-mingw32/sys-root/mingw/lib"
 --stack 20000000
 "C:/upp/out/MyApps/main/CLANG.Debug.Debug_Full.Main\\main.o"
 --start-group --end-group -lstdc++ --start-group -lmingw32
 -lgcc -lgcc_eh -lmoldname -lmingwex -lmsvcrt -ladvapi32 -lshell32
 -luser32 -lkernel32 --end-group
 "C:\\upp\\bin\\mingw64\\64\\lib\\gcc\\x86_64-w64-mingw32\\8.1.0\\crtend.o"
...