GNU/Linux >> Linux Esercitazione >  >> Linux

Come compilare codice Windows Visual C++ su Linux

Finché scrivi il tuo codice in modo portabile (non usando funzionalità specifiche del sistema operativo/compilatore come windows.h o specifiche estensioni del compilatore) e usa librerie portatili che dovrebbe essere compilato sia con Visual Studio che con GCC.

Il fatto è che mentre entrambi funzionano, lo fanno in modo leggermente diverso. Principalmente si tratta di impostazioni predefinite diverse, che potresti dover sovrascrivere in modo esplicito. Ad esempio:

  • Visual Studio 2017 e versioni successive hanno come impostazione predefinita C++14. Usa l'opzione /std per specificare uno standard diverso.

  • GCC ha un set predefinito, ma ti permette di cambiare lo standard che usi per la compilazione. Compilazione con

    g++ example.cpp
    

    utilizza lo standard predefinito (standard C++98 per GCC prima della versione 6 e C++14 per GCC dopo la versione 6). Il tuo codice sembra non riuscire perché utilizzi le funzionalità C++ 11 ma il tuo compilatore utilizza uno standard precedente per impostazione predefinita.

    g++ -std=c++11 example.cpp
    

    dovrebbe far sparire alcuni dei tuoi errori specificando esplicitamente lo standard, in questo caso lo standard C++11.

Questi sono solo compromessi diversi scelti dai compilatori. Avere un solo standard supportato probabilmente rende più facile il supporto e la correzione degli errori, dal momento che non hai diverse combinazioni di compilatore + versione standard che potrebbero avere bug diversi. La possibilità di cambiare lo standard utilizzato per la compilazione rende più semplice verificare se un programma funziona bene con un nuovo standard o quali modifiche sostanziali devi correggere, ecc...

In generale GCC è più minimale e devi specificarlo esplicitamente se vuoi che faccia qualcosa in più. Consiglierei di usare qualcosa come:

g++ -Wall -Wextra -pedantic -std=c++11 example.cpp

Usando -Wall e -Wextra dare un livello di avviso decente per iniziare con -pedantic ti dice se stai cercando di usare un'estensione del compilatore che funziona ma renderebbe il tuo codice meno portabile, e ultimo ma non meno importante dovresti sempre specificare lo standard che vuoi usare, sia esso -std=c++11 , -std=c++14 o il vecchio -std=c++98 .


Potresti anche provare la possibilità di sviluppo e debug remoto utilizzando VS 2015 e l'estensione Linux Development.Visual C++ per Linux Development (30 marzo 2016)


Linux
  1. Linux:come disinstallare Grub?

  2. Come compilare e installare software dal codice sorgente su Linux

  3. Rileva Windows o Linux in C, C++

  4. Come codificare un modulo del kernel Linux?

  5. Clang può compilare codice con le librerie .a compilate da GCC?

Come compilare ed eseguire programmi C, C++ in Linux

Come installare Windows PowerShell Core 6.0 in Linux

Come installare il codice di Visual Studio su Fedora 36 Linux

Come installare il codice di Visual Studio su Rocky Linux 8

Come installare il codice di Visual Studio su Linux Mint 20

Come posso profilare il codice C++ in esecuzione su Linux?