3.9 KiB
3.9 KiB
- MSVC Compiler Options
/nologo - Suppresses display of the copyright banner when the compiler starts up.
/Ox - Code optimization - a subset of /O2 option (creates fast code) that doesn't include /GF (string pooling) or /Gy (function-level linking).
/MT - Compiles to a multithreaded executable file, by using LIBCMT.lib (statically linking C runtime library).
/W0 - Suppresses all warnings.
/GS- - Disables buffer security.
/D<string> - Defines a <string> constant (equivalent to #define directive at the beginning of a source code file). Helpful for enabling/disabling parts of the code during development and switching into a production phase.
/Tc - Specifies a C source file. All code is treated as C code (instead of C++).
/link - Passes the specified options to the linker.
/OUT - Specifies the output file name.
/SUBSYSTEM - Tells the operating system how to run the .exe file, ex. CONSOLE (console app), WINDOWS (GUI app), etc.
/MACHINE - Specifies the target platform, ex. x86, x64, ARM, etc.
/DLL - Builds a DLL.
- Compile windows assembly with nasm
nasm -f "format" "code.asm" -o output_file.formatnasm -f bin eternalblue_kshellcode_x64.asm -o ./sc_x64_kernel.bin
- Compile as windows exe with ming
- % compile 64bit windows code
x86_64-w64-mingw32-("tab,tab,tab", to view all installed compilers")
- % compile 32bit windows code
i686-w64-mingw32-("tab,tab,tab", to view all installed compilers")
- % examples of compiling C/C++ code on linux for windows
x86_64-w64-mingw32-gcc hello_world.c -o hi.exex86_64-w64-mingw32-g++ hello_world.pp -o hi.exe
- % compile 64bit windows code
- Compile with mono
- % compiling cs (C-Sharp) code into a static.exe file
mono-csc compile_me.cs
- % compile with mcs ("for versions of mono-devel that doesn't come with csc")
dmcs compile_me.cs ("old-not-supported-verion")mcs compile_me.cs
- Run/test compiled EXE with mono-devel
mono runme.exe
- % compiling cs (C-Sharp) code into a static.exe file
- Compile Visual Studio projects on Linux
-
Installing .NET
sudo snap search dotnetsudo snap install <package_name>- for some applications you may have to install ("COMPLETE .NET") vs .Net Core with snap
- https://dotnet.microsoft.com/download
sudo dpkg -i dotnet_installer.deb
-
Create new project
dotnet new console
-
Create solution project
cd ./path/to/vs/projectdotnet new <option>dotnet new sln
-
Create new project file
- get list of project types
dotnet new project
- get list of project types
-
Create new project file -
dotnet new <project_file_type>-dotnet new mstest -
list, add, or remove project files from the the solution.sln file
- double check if the soultion file has your project in it
dotnet sln list
- add a project file to your solution file in the current dir
dotnet sln add project.csproj
- remove project file from the solution file in the current dir
dotnet sln remove project.csproj
- double check if the soultion file has your project in it
-
how to build a probject
dotnet builddotnet msbuild- NOTE; ("this may only complie C# code into valid DLLs NOT EXEs")
- build/msbuild with the system ARCH
dotnet build -r win-x64 project.csproj
- how to run a project without testing with a final binary
dotnet run
- true method to compile projects into .exe binaries
- compile linux binary
dotnet publish -r linux-x64 -p:PublishSingleFile=true --self-contained false
- compile windows.exe binary
dotnet publish -r win-x64 -p:PublishSingleFile=true --self-contained false
- compile linux binary
-
adding the missing reference/packages you forget with dotnet+nuget
- % https://www.nuget.org/ -> "search for reference/package
dotnet add package <package-content-whatever-string>cd /path/to/current/projectdotnet add package System.ServiceProcess.ServiceController --version 6.0.0-preview.5.21301.5
-
- compiling for real with xbuild and the solution file
- NOTE; (xbuild is for stuff that is <Full .NET>, not just <.dot Core>)
xbuild solution_file.sln- NOTE: xbuild no longer supported