Gcc 4.5 and GNU Radio 3.3.0

I am trying to compile GNU Radio 3.3.0 under openSuse 11.3, which uses
gcc 4.5.0. I have all the dependencies built and resolved, but when I
compile GNU Radio 3.3.0, I get errors. It seems that GNU Radio does not
compile successfully with the new gcc 4.5.0, although I know it compiles
with gcc 4.4.1 on openSuse 11.2. However, I specifically need to run
openSuse 11.3 for my application. How, exactly, can I get GNU Radio
3.3.0 to build under gcc 4.5.0? Will the next release of GNU Radio
address this? Is there a compiler flag I can use, or a quick-and-easy
hack to the GNU Radio code? What is the problem with gcc 4.5.0? Thank
you very much for your help on this issue. I really appreciate it.

Steve McMahon

On 10/12/2010 12:04 PM, Steve M. wrote:

I am trying to compile GNU Radio 3.3.0 under openSuse 11.3, which uses gcc
4.5.0. I have all the dependencies built and resolved, but when I compile GNU
Radio 3.3.0, I get errors. It seems that GNU Radio does not compile successfully
with the new gcc 4.5.0, although I know it compiles with gcc 4.4.1 on openSuse
11.2. However, I specifically need to run openSuse 11.3 for my application. How,
exactly, can I get GNU Radio 3.3.0 to build under gcc 4.5.0? Will the next release
of GNU Radio address this? Is there a compiler flag I can use, or a quick-and-easy
hack to the GNU Radio code? What is the problem with gcc 4.5.0? Thank you very
much for your help on this issue. I really appreciate it.

I am building gnuradio from git (next branch) on gcc 4.5 and am not
having any gcc issues.

Philip

Hi,

3.3.0 stable doesn’t compile under openSUSE 11.3 with gcc 4.5.0. But
installing gcc43 and gcc43-c++ (and using them… just set the
appropriate environment variables) did the job for me.

The last time I compiled the git branch under openSUSE was 2 months
ago. At this time, gcc45 didn’t work for this branch, too. Maybe, this
changed in the meantime.

Gregor

2010/10/12 Philip B. [email protected]:

Gregor:

Thanks for your reply. I have never installed a second version of gcc on
a Linux machine before. How can I install gcc 4.4.4 in /opt so that it
exists alongside the gcc 4.5.0 that comes packaged with openSUSE 11.3??
My machine is in a lab, and does not have a connection to the internet,
so I would have to download packages and put them on a USB pen drive and
walk them to the machine. Your help is greatly appreciated. Thanks.

Steve McMahon

You can install various gcc versions in parallel without problems. But
I suggest to use the gcc from the repositories. Just search for it:
“zypper search gcc”, and in your case, where the machine has no
connection to the internet, just download the appropriate rpms from
the “openSUSE:11.3/standard”-repository. http://software.opensuse.org/
is the right place for you.

/usr/bin/gcc and /usr/bin/g++ are just symlinks to /usr/bin/gcc-4.5
and /usr/bin/g+±4.5

If you want to use a version different than the default, just change
the symlinks (there are a few more… /usr/bin/c++, /usr/bin/cc). You
should also consider to use update-alternatives … just google for
it.

Or you set the environment variables … Just for the package you want
to compile:
“CC=/usr/bin/gcc-4.3 CXX=/usr/bin/g+±4.3 ./configure …”

Gregor

2010/10/14 Steve M. [email protected]:

On Wed, Oct 13, 2010 at 10:28 PM, Steve M.
[email protected] wrote:

Gregor:

Thanks for your reply. I have never installed a second version of gcc on a Linux
machine before. How can I install gcc 4.4.4 in /opt so that it exists alongside
the gcc 4.5.0 that comes packaged with openSUSE 11.3?? My machine is in a lab, and
does not have a connection to the internet, so I would have to download packages
and put them on a USB pen drive and walk them to the machine. Your help is greatly
appreciated. Thanks.

Steve McMahon

Providing us with some kind of error message could help us help you.

Tom

Gregor:

Thanks for your reply. Remember, however, that this openSUSE 11.3
machine I have does not have internet access; it’s in a closed-room off
the network. So I can’t run “zypper search gcc”, and things like that.
Is there a way I can separately download a *.tar.gz for gcc 4.4.4 using
my other internet-connected computer, and then go onto my off-network
machine and build it from source, install it in /opt, and then use it
separately from the default gcc 4.5.0 that comes built-in with openSUSE
11.3? Any help is appreciated. Thanks.

Steve McMahon

It took me a while to get some time to go back to my openSUSE 11.3
machine and regenerate the error message. Sorry, I should have done this
when I made the initial post.

So I successfully installed the following from source under openSUSE
11.3:

Cheetah-2.4.2.1.tar.gz
Markdown-2.0.3.tar.gz
cppunit-1.12.1.tar.gz
fftw-3.2.2.tar.gz
gsl-1.14.tar.gz
numpy-1.4.1.tar.gz
sdcc-2.9.0-i386-unknown-linux2.5.tar.bz2
swig-1.3.40.tar.gz

Then I do a “./configure” for GNU Radio 3.3.0, and it runs fine, and it
reports it’s going to build everything that I need/that it should.

However, when I do a “make”, it runs for a while, but then I get these
errors:

libtool: compile: g++ -DHAVE_CONFIG_H -I. -I…/…/…
-I/opt/pkgs/gnuradio-3.3.0/usrp2/host/include
-I/opt/pkgs/gnuradio-3.3.0/usrp2/firmware/include -I/usr/include
-I/usr/include -I/opt/pkgs/gnuradio-3.3.0/gnuradio-core/src/lib/runtime
-I/opt/pkgs/gnuradio-3.3.0/gnuradio-core/src/lib/general
-I/opt/pkgs/gnuradio-3.3.0/gnuradio-core/src/lib/general
-I/opt/pkgs/gnuradio-3.3.0/gnuradio-core/src/lib/gengen
-I/opt/pkgs/gnuradio-3.3.0/gnuradio-core/src/lib/gengen
-I/opt/pkgs/gnuradio-3.3.0/gnuradio-core/src/lib/filter
-I/opt/pkgs/gnuradio-3.3.0/gnuradio-core/src/lib/filter
-I/opt/pkgs/gnuradio-3.3.0/gnuradio-core/src/lib/missing
-I/opt/pkgs/gnuradio-3.3.0/gnuradio-core/src/lib/reed-solomon
-I/opt/pkgs/gnuradio-3.3.0/gnuradio-core/src/lib/viterbi
-I/opt/pkgs/gnuradio-3.3.0/gnuradio-core/src/lib/io
-I/opt/pkgs/gnuradio-3.3.0/gnuradio-core/src/lib/g72x
-I/opt/pkgs/gnuradio-3.3.0/gnuradio-core/src/lib/swig
-I/opt/pkgs/gnuradio-3.3.0/gnuradio-core/src/lib/hier
-I/opt/pkgs/gnuradio-3.3.0/gnuradio-core/src/lib/swig
-I/usr/local/include -I/usr/local/include
-I/opt/pkgs/gnuradio-3.3.0/gruel/src/include
-I/opt/pkgs/gnuradio-3.3.0/gruel/src/include -I/usr/local/include
-I/opt/pkgs/gnuradio-3.3.0/gruel/src/include
-I/opt/pkgs/gnuradio-3.3.0/gruel/src/include -g -O2 -Wall
-Woverloaded-virtual -pthread -MT usrp2.lo -MD -MP -MF .deps/usrp2.Tpo
-c usrp2.cc -fPIC -DPIC -o .libs/usrp2.o
usrp2.cc:41:33: error: type/value mismatch at argument 1 in template
parameter list for ‘template class boost::weak_ptr’
usrp2.cc:41:33: error: expected a type, got ‘usrp2::usrp2::usrp2’
usrp2.cc:43:75: error: type/value mismatch at argument 1 in template
parameter list for ‘template class boost::weak_ptr’
usrp2.cc:43:75: error: expected a type, got ‘usrp2::usrp2::usrp2’
usrp2.cc: In static member function ‘static usrp2::usrp2::sptr
usrp2::usrp2::find_existing_or_make_new(const std::string&,
usrp2::props*, size_t)’:
usrp2.cc:60:20: error: request for member ‘expired’ in
‘p.__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator-> with
_Iterator = usrp2::usrp_table_entry*, _Container =
std::vector
usrp2::usrp_table_entry,
__gnu_cxx::__normal_iterator<_Iterator, _Container>::pointer =
usrp2::usrp_table_entry*->usrp2::usrp_table_entry::value’, which is
of non-class type ‘int’
usrp2.cc:64:31: error: no matching function for call to
‘boost::shared_ptrusrp2::usrp2::shared_ptr(int&)’
/usr/include/boost/smart_ptr/shared_ptr.hpp:182:5: note: candidates are:
boost::shared_ptr< >::shared_ptr() [with T =
usrp2::usrp2]
/usr/include/boost/smart_ptr/shared_ptr.hpp:169:1: note:
boost::shared_ptrusrp2::usrp2::shared_ptr(const
boost::shared_ptrusrp2::usrp2&)
usrp2.cc:73:23: error: expected type-specifier
usrp2.cc:73:23: error: expected ‘)’
usrp2.cc:74:30: error: no matching function for call to
‘usrp2::usrp_table_entry::usrp_table_entry(std::string&,
usrp2::usrp2::sptr&)’
usrp2.cc:43:5: note: candidates are:
usrp2::usrp_table_entry::usrp_table_entry(const std::string&, int)
usrp2.cc:38:27: note:
usrp2::usrp_table_entry::usrp_table_entry(const
usrp2::usrp_table_entry&)
In file included from /usr/include/boost/shared_ptr.hpp:17:0,
from
/opt/pkgs/gnuradio-3.3.0/usrp2/host/include/usrp2/usrp2.h:22,
from usrp2.cc:23:
/usr/include/boost/smart_ptr/shared_ptr.hpp: In constructor
‘boost::shared_ptr< >::shared_ptr(Y*) [with Y =
int, T = usrp2::usrp2]’:
usrp2.cc:73:56: instantiated from here
/usr/include/boost/smart_ptr/shared_ptr.hpp:187:50: error: cannot
convert ‘int*’ to ‘usrp2::usrp2*’ in initialization
make[4]: *** [usrp2.lo] Error 1
make[4]: Leaving directory /opt/pkgs/gnuradio-3.3.0/usrp2/host/lib' make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory/opt/pkgs/gnuradio-3.3.0/usrp2/host’
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory /opt/pkgs/gnuradio-3.3.0/usrp2' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory/opt/pkgs/gnuradio-3.3.0’
make: *** [all] Error 2

It looks like a problem with the Boost library. I don’t have this
problem in openSUSE 11.2 (which bundles gcc 4.4.1 and Boost 1.39), but
it is not working for me with openSUSE 11.3 (which bundles gcc 4.5.0 and
Boost 1.42). On this particular machine, I need to run specifically
openSUSE 11.3.

Any help would be very much appreciated.
Thanks!!

Steve McMahon

On Thu, Nov 04, 2010 at 10:17:04AM -0700, Steve M. wrote:

sdcc-2.9.0-i386-unknown-linux2.5.tar.bz2
swig-1.3.40.tar.gz

Then I do a “./configure” for GNU Radio 3.3.0, and it runs fine, and it reports
it’s going to build everything that I need/that it should.

However, when I do a “make”, it runs for a while, but then I get these errors:

There’s a much easier way to get where you’re headed.

Use the “master” branch in git. I’m pretty sure it has this problem
fixed.

http://www.gnuradio.org/redmine/wiki/gnuradio/Download

Eric

You don’t need to build everything by your own. Just download the RPMs
from http://software.opensuse.org, put them on your usb-stick and
install them with “rpm -Uvh blablub.rpm”

As I mentioned above, it’s no big deal to install and use an older
gcc-version.

Alternatively, you could try to patch the stable 3.3.0 version, so you
can compile with gcc45. An approach would be to diff the appropriate
files with their equivalent from the next-branch… As the
next-branch compiles without problems under openSUSE 11.3 and gcc45,
there should be something changed in the sources.

But just to use the older gcc is the easier way. Or you switch to the
next-branch, which isn’t unstable (at least for me).

Gregor

2010/11/4 Steve M. [email protected]:

On Thursday, November 04, 2010 02:35:32 pm Tom R. wrote:

Markdown-2.0.3.tar.gz
However, when I do a “make”, it runs for a while, but then I get these
errors:
11.3 installation and all three compiled fine. It fails from the


Discuss-gnuradio mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio
There is a patch for GCC4.5. I found it on Fedore. let me know if you
ned it

Thomas

Hello Thomas Spuhler:

Yes, I would definitely be interested in your gcc 4.5 patch for Fedora.
When you say patch, what do mean, it “fixes” gcc 4.5, or it “fixes” GNU
Radio 3.3.0? Could you provide more explanation about this patch?

I guess I’m not sure about what people are saying on this issue
regarding my problem building GNU Radio 3.3.0 on openSUSE 11.3 using gcc
4.5. Is it gcc-4.5’s “fault” (a bug in gcc), or gnuradio-3.3.0’s “fault”
(a bug in gnuradio)?

One last question: Tom R. mentioned that this issue will be fixed
in GNU Radio 3.3.1. When is it expected to be released?

Thanks again for your help, everyone.

Steve McMahon

On Thu, Nov 4, 2010 at 5:06 PM, Eric B. [email protected] wrote:

numpy-1.4.1.tar.gz

http://www.gnuradio.org/redmine/wiki/gnuradio/Download

Eric

I just tried compiling from maint, master, and next on a new OpenSUSE
11.3 installation and all three compiled fine. It fails from the
tarball for GNU Radio 3.3.0.

So use one of the git versions for now. If you’re on a machine not
connected, just git clone gnuradio (master is probably the best branch
to use) and tar it up to move it across to the other computer. That
should work for you.

When we get 3.3.1 out, this problem will be fixed.

Tom

Hello:

Thanks for your reply, Tom R…

I guess I’m not sure about what people are saying on this issue
regarding my problem building GNU Radio 3.3.0 on openSUSE 11.3 using gcc
4.5 – is it gcc-4.5’s “fault” (a bug in gcc), or gnuradio-3.3.0’s
“fault” (a bug in gnuradio)?

I don’t think I’m understanding the source of my problem correctly. Is
my issue that gcc 4.5 cannot properly compile Boost 1.42, and that I
need to use newer version of Boost with gcc-4.5, or is it that
gnuradio-3.3.0 uses a C++ construct not supported in gcc-4.5, or is it a
bug in gcc-4.5, or what?

I am debating which work-around is easier for me: either install
gcc-4.4.4 alongside gcc-4.5 on my openSUSE 11.3 machine and re-try
gnuradio 3.3.0; or to download one of the Git versions (“maint”,
“master”, or “next”) of gnuradio and re-try with gcc-4.5.

Tom R. mentioned that this issue will be fixed in GNU Radio 3.3.1.
When is it expected to be released?

Thanks a lot for your help everyone.

Steve McMahon

On Saturday, November 06, 2010 02:23:20 pm Steve M. wrote:

To: [email protected]

It took me a while to get some time to go

sdcc-2.9.0-i386-unknown-linux2.5.tar.bz2
However, when I do a “make”, it runs for a
sure it has this problem

connected, just git clone gnuradio (master is probably

Tom


Discuss-gnuradio mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio

There is a patch for GCC4.5. I found it on Fedore. let me
know if you ned it

The patch makes it build with gcc4.5.1 but then it won’t build with
older gcc,
You need to put an if statement into the spec file

http://pastebin.mandriva.com/21172
and the patch:

http://pastebin.mandriva.com/21173


Thomas

On Sat, Nov 06, 2010 at 02:34:35PM -0700, Steve M. wrote:

Hello:

Thanks for your reply, Tom R…

I guess I’m not sure about what people are saying on this issue
regarding my problem building GNU Radio 3.3.0 on openSUSE 11.3 using
gcc 4.5 – is it gcc-4.5’s “fault” (a bug in gcc), or
gnuradio-3.3.0’s “fault” (a bug in gnuradio)?

I don’t think I’m understanding the source of my problem
correctly. Is my issue that gcc 4.5 cannot properly compile Boost
1.42, and that I need to use newer version of Boost with gcc-4.5, or
is it that gnuradio-3.3.0 uses a C++ construct not supported in
gcc-4.5, or is it a bug in gcc-4.5, or what?

I don’t know about any boost/gcc problem. However we did fix a bug in
GNU Radio on 2010-08-04 in changeset d2888160c3fca8da2 that was for
gcc 4.5.0 compatibility.

The diff is attached.

Eric

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs