Visual Studio - Hvad er den passende Unix-POSIX-baserede værktøjskæde, der skal bruges i Windows

Indlæg af Hanne Mølgaard Plasc

Problem



Lad os sige, at jeg har hentet nogle C/C++ originale og umodificerede distributionsbiblioteker, der var specielt designet til Unix-POSIX -baserede miljøer, hvor de oprindelige udviklere, der designede deres kode, skrev dem specifikt for deres omgivelser - systemer og disse biblioteker oprindeligt er ikke bærbare til moderne Windows systemer.


Det jeg gerne vil kunne gøre er at i det mindste bygge de nødvendige statiske eller dynamiske biblioteker for at kunne linke dem imod mine egne Visual Studio-projekter.


Jeg ved, at du med Mingw(clang) kun har brug for MSVC run-time biblioteker, da det ikke har brug for POSIX dll afhængigheder, da det bruger direkte af Win32 biblioteker . Men det har ikke alle de Unix miljøfunktioner, som Cygwin(gcc/g++) gør, og for enhver C/C++ kode, der er afhængig af indfødt POSIX funktionalitet som fork()]], mmap() osv. Skulle genindføres i Win32 ækvivalenterne for korrekt samling, sammenkædning og drift af ansøgningen.


Med Cygwin er jeg mere udsat for næsten alle Unix-POSIX funktioner med en lille højere læringskurve og for at integrere disse biblioteker, der er bygget af Cygwin's compiler (er), ville de stole på cygwin1.dll for at kunne køre på en Windows-maskine.





Et primært eksempel:


De nuværende biblioteker, som jeg forsøger at bygge til at arbejde med Visual Studio, er GNU's: GMP, MPIR, MPFR, MPFRC++.


Indtil videre har jeg været i stand til at bygge MPIR i Visual Studio 2017 ved hjælp af Python og Windows version af Yasm. Men når man forsøger at bygge MPFR kræver det afhængigheden af ​​GMP. Så nu skal jeg bygge GMP.


Jeg kunne bruge Mingw til at bygge GMP, som på nogle måder kan være lidt lettere, men ved at bruge Gygwin og bygge GMP gennem Unix/Linux/POSIX miljøet ville jeg udsætte mig for funktionaliteten af ​​Unix/POSIX systemer.


Bemærk - Jeg er primært bekendt med Windows miljøer og har indtil for nylig aldrig arbejdet med eller på nogen Unix baseret OS. Så der er lidt af en læringskurve for mig. Jeg gør al den forskning og læsning, som jeg kan på egen hånd, hvilket ikke er et problem. Det giver god erfaring med hver prøve og fejl.





Det, jeg gerne vil vide, er, når man arbejder på en Windows maskine; Hvad ville være den foretrukne metode mellem de to tilfælde scenarier for at opbygge POSIX designet biblioteker for at kunne linke korrekt til MSVC Window's baserede applikationer? Et andet ord, jeg vil gerne effektivt konvertere POSIX specifikke biblioteker til at kunne arbejde på min nuværende platform eller maskine. Bemærk, at jeg ikke sagde, at jeg ønskede at 'omskrive' bibliotekerne for at gøre dem bærbare til ethvert vilkårlig miljø. I dette særlige tilfælde behøver jeg kun at køre på mit Windows miljø. Eller enhver anden passende metode. Jeg vil bruge nogle C og nogle C++ biblioteker til at blive knyttet til mine MSVC c++17 projekt (er). (Jeg kan også have nogle af terminologien forkert i nogle af mine ovenstående udsagn eller antagelser, da jeg ikke er bekendt med Unix-POSIX miljøer.

Bedste reference