tutorial - resolve missing native build tools netbeans c++




Netbeans and MinGW-w64 (4)

I'm trying to configure my NetBeans on win7 64bit, to work with the MinGW-w64.
So I put in the %PATH% variable the following paths of the compiler:
C:\mingw-w64-bin_i686\mingw\bin
C:\minGw-MSYS\msys\bin
C:\mingw-w64-bin_i686\libexec\gcc\x86_64-w64-mingw32\4.7.0

Then I opened NetBeans and this was configured:

The configuration in NetBeans

I tried to compile a little test program but I received this error:

g++.exe: fatal error: -fuse-linker-plugin, but liblto_plugin-0.dll not found compilation terminated. make[2]: * [dist/Debug/MinGW-Windows/test.exe] Error 1 make1: [.build-conf] Error 2 make: ** [.build-impl] Error 2

BUILD FAILED (exit value 2, total time: 1s)

I do have this file in C:\mingw-w64-bin_i686\libexec\gcc\x86_64-w64-mingw32\4.7.0

what am I missing?


I have just downloaded the latest automated build, unzipped it, added the main bin directory to path, and run:

x86_64-w64-mingw32-gcc test.cpp -o test.exe

and

x86_64-w64-mingw32-gcc -fuse-linker-plugin test.cpp -o test.exe

and it works. The same for the i686 variant. Your IDE is doing something wrong. Or you shouldn't have messed with the files. Or you shouldn't have removed the prefixes. Seriously.

PS: You only have to add the main "bin" directory to PATH, all the rest is wrong.


Right, after months of putting this off I've finally sat down and done it. I'll probably make a more detailed post on my blog with pretty pictures but here is a trimmed down SO version which will hopefully be enough for you (and everyone else) to get going with.

Prerequisites

Remove MinGW, MSYS and CMake if you have them and can afford to lose them (we will reinstall MinGW (obv.) and MSYS but not CMake as it doesn't appear to be needed.)

  • Netbeans or other suitable IDE
  • 64bit Windows.
  • EnvMan (optional but handy for managing Windows Environment variables.)

Installation

MinGW-W64 C compiler and MSYS

Setup

  • Add 'C:\MinGW-W64\bin' to your Windows PATH variable.
  • Add 'C:\MSys\msys\bin' to your Windows PATH variable.
  • Start Netbeans and go to Tools -> Options -> C/C++.
    • Click 'Add' under 'Tool Collection' and select the base directory of MinGW-W64 (C:\MinGW-W64\bin).
    • Select 'MinGW' from 'Tool Collection Family' if it isn't auto-detected and click 'OK'.
    • Set the 'C Compiler to C:\MinGW-W64\bin\x86_64-w64-mingw32-gcc.exe.
    • Set the 'C++ Compiler to C:\MinGW-W64\bin\x86_64-w64-mingw32-g++.exe.
    • Set the 'Make Command' to C:\MSys\msys\bin\make.exe.

And that should be it!

I should note that I am using the system to compile a library file to be use via JNI so have some additional steps for that which I missed out as they weren't needed here. However I made a quick 'Hello World' program and it compiled and ran nicely.

Happy coding!


FFMPEG, Netbeans and C++

I don't know about Windows. but using netbeans on linux, this is what I did.

Right Click on the c++ project you are using ffmpeg with and Select "Properties".

In the popup window select "Build"->"C++ Compiler".

Under "General" edit "Include Directories" and add the directory to your ffmpeg source code

e.g "~/ffmpeg_source/ffmpeg",

after which select "Linker" under "Build" and under "Compilation Line" edit "Addition Options"

and add "$$(pkg-config --libs --cflags {{ffmpeg libraries your project depends on}})"

e.g "$$(pkg-config --libs --cflags libavformat)" because my current project is using on libavformat.

I hope this was helpful.


Install gcc 4.9 on windows and configure it in Netbeans

I suggest you to try MinGW-w64. (Download.)

It's similar to MinGW, but have better multitreading support, can easily compile x64 applications, and what's more important, at this moment it uses GCC 4.9.2.


By the way, MinGW applications require some .dlls to work too. Usually you just provide these libraries with your application, but another option is to add -static flag at linking phase. Applications that are compiled with it do not require any external library files (unless you're using 3rd party libraries that don't support static linking).