includeos / IncludeOS

A minimal, resource efficient unikernel for cloud services
https://www.includeos.org
Apache License 2.0
4.9k stars 359 forks source link

make all in vmbuild fails in my new setup #97

Closed kybeg closed 9 years ago

kybeg commented 9 years ago

I'm stuck at this point right now where I don't know whats wrong or how to debug this forward.

I have my new deployment script and it seems to work OK to the point where I need to compile vmbuild.

When I run make in that folder, I get the following error:

ubuntu@stagetest:/tmp/src/IncludeOS/vmbuild$ make all cc1plus: error: unrecognized command line option '-std=c++11' make: *\ [vmbuild.o] Error 1

I can see from the makefile that the compiler used is g++. Is that supposed to be the standard g++ or the cross-compiled g++? If so, i probably have a error in my PATH.

The file cc1plus is either one from the following locations: /tmp/src/IncludeOS/includeos/libexec/gcc/i686-elf/4.9.1/cc1plus /tmp/src/IncludeOS/build/build-gcc/gcc/cc1plus /usr/lib/gcc/x86_64-linux-gnu/4.6/cc1plus

Probably the first or the last, since the one in the middle is from the build directory. Is this a linking-issue?

If anyone has any tips i'd be grateful. This is the only issue holding be back before I can attempt my first pull request. :)

fwsGonzo commented 9 years ago

Hey! /usr/lib/gcc/x86_64-linux-gnu/4.6/cc1plus

Unfortunately, GCC 4.6 doesn't support c++11, although I suspect that vmbuilder doesn't actually need it. Probably ever. You can either remove -std=c++11 from the Makefile of vmbuild, or upgrade to at least GCC 4.7.

alfreb commented 9 years ago

We're probably going to do much more out of vmbuild so I'd like to keep C++11 in the makefile, so you should upgrade to a more recent compiler. This is also a good idea since we're using it for building the latest GCC, and it's usually smart to not use a too old compiler when building a new one.

For testing though, feel free to remove C++11 from ./vmbuild/make, just beware, that this will be a short-term solution.

kybeg commented 9 years ago

If I have to run a more recent gcc, it means ubuntu 12.04 will fail with default tools. I’m using standard packages.

On 17. nov. 2014, at 09.41, Alfred Bratterud notifications@github.com wrote:

We're probably going to do much more out of vmbuild so I'd like to keep C++11 in the makefile, so you should upgrade to a more recent compiler. This is also a good idea since we're using it for building the latest GCC, and it's usually smart to not use a too old compiler when building a new one.

For testing though, feel free to remove C++11 from ./vmbuild/make, just beware, that this will be a short-term solution.

— Reply to this email directly or view it on GitHub https://github.com/hioa-cs/IncludeOS/issues/97#issuecomment-63274125.

alfreb commented 9 years ago

Yes, Hårek had to upgrade because of this very issue, and the tridents are now both/all on 14.04.

C+11 provides major improvements to C++, which we're using extensively throughout IncludeOS. It's probably possible to build new C++ compilers with older ones for a while longer, but it's only a matter of time before the compiler (which is written in C++) starts using C++11 too.

Feel free to remove the C++11 flag from ./vmbuild/Makefile for now, just beware that we'll probably add it back when we add features to the vmbuilder, as these will most likely be using C++11 features at some point.

alfreb commented 9 years ago

...on a side note: it might be nice to provide support for older versions of Ubuntu, but then of course we'd have to install a newer gcc in it, without using default packages. It seems to be pretty straightforward to get a hold of these non-default packages, for instance like this.

kybeg commented 9 years ago

Yes and this is the underlying problem. How far back do you want to support without too much hassle? In practice, it means having individualized installation instructions per platform and per version. In terms of testing, we have to maintain regression testing for each platform in order to catch these kinds of cases in the future. So as long as you can be homogenous the less work we get on maintaining regressions.

Once we start looking at centOS, fedora and RedHat, we will probaly find even more specializations.

On 17. nov. 2014, at 12.52, Alfred Bratterud notifications@github.com wrote:

...on a side note: it might be nice to provide support for older versions of Ubuntu, but then of course we'd have to install a newer gcc in it, without using default packages. It seems to be pretty straightforward to get a hold of these non-default packages, for instance like this http://mortenvp.com/installing-a-newer-gccg-on-ubuntu-12-04-lts/.

— Reply to this email directly or view it on GitHub https://github.com/hioa-cs/IncludeOS/issues/97#issuecomment-63294262.

alfreb commented 9 years ago

Yea, I know, that's why I put down Ubuntu 14.04 as a prerequisite from the beginning, in the README. I was actually thinking that we'd provide an automatically built development-appliance at some point, which is what contiki is doing. But since our list of dependencies is really short (i.e. a new GCC and buildtools) I think most linux-users will find it pretty straightforward to get the dependencies right.