GNU Radio build error - boost

I am trying to build GNU Radio. But I am getting the following error when I am trying to run make.
I followed the steps mentioned in README.building-boost
$ export LD_LIBRARY_PATH=$BOOST_PREFIX/lib
$ cd <path-to-top-of-gnuradio-tree>
$ ./bootstrap
$ ./configure --with-boost=$BOOST_PREFIX # plus whatever config args you usually use
But when I run make, I get this error :
/usr/local/lib/libgruel-3.4.1git.so.0: undefined reference to `boost::thread::start_thread()'
I wrote a simple program using Boost Thread and was able to compile and run it.
Any idea how to fix the build issue?

I know this is an old question, but if you use Ubuntu, then use this script:
www.sbrac.org/files/build-gnuradio
it works really good, you may have to run it 2 times to get everything working, but it saves a lot of time fixing the problems of dependency like the one you were dealing with.

Related

What makefile should I use to build a gtk-3-examples application?

I'm not really experienced with graphics programming, but I got curious. I installed both libgtk-3-dev and gtk-3-examples on my Debian 10.7 machine. From there I listed the example package files using dpkg-query -L gtk-3-examples to find some example programs.
In the examples directory I found the following README file:
== Building the examples ==
The examples in this directory are built alongside the rest of GTK+.
The examples under the `application[1-10]` directories are also included in
the GTK+ API reference documentation, and can be built independently, using
the system libraries, by doing:
$ cd application1
$ make -f Makefile.example
Looks straight forward. However, following the directions exactly yields the following result:
make: Makefile.example: No such file or directory
make: *** No rule to make target 'Makefile.example'. Stop.
There are no "Makefile.example" files in the application folders. Running find -name "Makefile*" in the examples directory yields:
./application7/Makefile.in.gz
./application7/Makefile.am
./Makefile.in.gz
./application5/Makefile.in.gz
./application5/Makefile.am
./bp/Makefile.in.gz
./bp/Makefile.am
./application9/Makefile.in.gz
./application9/Makefile.am
./application6/Makefile.in.gz
./application6/Makefile.am
./application2/Makefile.in.gz
./application2/Makefile.am
./application10/Makefile.in.gz
./application10/Makefile.am
./application3/Makefile.in.gz
./application3/Makefile.am
./application1/Makefile.in.gz
./application1/Makefile.am
./application8/Makefile.in.gz
./application8/Makefile.am
./application4/Makefile.in.gz
./application4/Makefile.am
./Makefile.am
I've not had any luck building an example program using the above files. I'm guessing it is because of my unfamiliarity with auto tools? Is there an easy way to build an example GTK program using the above files or do I need know a lot more about make/autotools/configure to get a working example running?
Update:
The cant-run-makefile-am-what-should-i-do post is informative but does not provide a course of action when no configure, bootstrap, or autogen programs can be found within the package. The following command yields no results when executed in my examples directory: find -type f | grep -i -E "*conf*|*auto*|*boot*". I need one of those files to be provided in order to have a successful build (as far as I understand it anyway).
Sorry for the fuss! I'm used to installing regular packages and missed that I needed to download the full source code to get the examples working. So, originally I mentioned that I installed both libgtk-3-dev and gtk-3-examples. I did so using apt-get install libgtk-3-dev && apt-get install gtk-3-examples.
However, to build GTK along with its examples locally it looks like what you want to do is get the source package archive with apt-get source gtk-3-examples (or similar.. I think it actually picked a different meta-package for me when I ran that command).
Then, in my new gtk+3.0-3.24.5 directory there's a nice configure binary that I can run (with subsequent make and make install commands) which produce many files including example program binaries.
So with ./gtk+3.0-3.24.5/examples/application1/exampleapp I get a running example. Voila!

cygwin doesn't execute make

I am very new to cygwin and recently installed it because I need to compile some fortran files. I installed all libraries (and its dependencies) I need, but when I execute make to run the makefile, nothing is happening:
user#PC1 ~
$ make
user#PC1 ~
$
No error, no nothing. When I directly execute the file contained in the makefile: same result. All files required are contained in my folder where I run make. However, the package seems to be installed just fine when I call where make or which make. I reinstalled everything multiple times, but still nothing is happening. I then tried to bind the MinGW make so I can use it in cygwin and by calling this version of make, I receive the error I'd expect:
user#PC1 ~
$ mymake
C:\mingw\bin\mingw32-make.exe: *** No targets specified and no makefile found. Stop.
Unfortunately, I need the make-package from cygwin itself to work, but I have no idea what's going on. Any hints? Calling make.exe doesn't work either.
Update: I just installed cygwin and all required packages on my laptop and there everything works as intended...no problems in runing make.
I had the same problem and managed to fix this following those steps:
Open the cygwin setup and completely uninstall make (reinstalling failed for me). If you haven't deleted the download folder yet, you can select "Install from Local Directory" to make things faster.
Once uninstalled, re-run the setup again and check make, install the dependencies if needed.
Tested with make version 4.2.1-1 on my system, and got it working again.

Is there a way to reliably get automake to ignore timestamps?

First, a little bit of background as to why I'm asking this question: Our product's daily build script (as run under Debian Linux by Jenkins), does roughly this:
Creates and enters a build environment using debootstrap and chroot
Checks out our codebase (including some 3rd party libraries) from SVN
Runs configure and make as necessary to build all of the code
Packages up the results into an install file that can be uploaded to our headless server boxes using our install tool.
This mostly works fine, but every so often (maybe one daily build out of 10), the part of the script that builds one of our third-party libraries will error out with an error like this one:
CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/bash
/root/software/3rdparty/libogg/missing autoconf
/root/software/3rdparty/libogg/missing: line 81: autoconf: command not found
WARNING: 'autoconf' is missing on your system.
You should only need it if you modified 'configure.ac',
or m4 files included by it.
The 'autoconf' program is part of the GNU Autoconf package:
<http://www.gnu.org/software/autoconf/>
It also requires GNU m4 and Perl in order to run:
<http://www.gnu.org/software/m4/>
<http://www.perl.org/>
make: *** [configure] Error 127
As far as I can tell, this happens occasionally because the timestamps of the files in the third-party library are different (e.g. off by a second or two from each other just due to the timing of when they were checked out from the SVN server during that particular build). That causes the configure script to think that it needs to auto-regenerate a file, so then it tries to call 'automake' to do so, and errors out because automake is not installed.
Of course the obvious thing to do here would be to install automake in the build environment, but the build environment is not one that I can easily modify (due to institutional reasons), so I'd like to avoid having to do that if possible. What I'd like to do instead is figure out how to get the configure scripts (which I can modify) to ignore the timestamps and just always do the basic build that they do when the timestamps are equal.
I tried to finesse the problem by manually running 'touch' on some files to force their timestamps to be the same, and that seemed to make the problem occur less often, but it still happens:
./configure --prefix="$PREFIX" --disable-shared --enable-static && \
touch config* aclocal* Makefile* && \
make clean && make install ) || Failure "libogg"
Can anyone familiar with how automake works supply some advice on how I might make the "configure" calls in our daily build work more reliably, without modifying the build environment?
You could try forcing SVN to use commit times on checkout on your Jenkins server. These commit times can also be set in SVN if they don't work out for some reason. You could use touch -d or touch -r instead of just touch to avoid race conditions there.

Contiki: sky-shell-exec ELF_Loader error

I'm trying to get the sky-shell-exec example working in Contiki. To do this I am basically running the commands in the README that comes with the sky-shell-exec example. The only thing I make sure to do that the README doesn't say is to do a "make compile-executable" before doing the "make upload-executable". I am also always doing "sudo make …" since otherwise I get permission issues when trying to access the sky mote. However, this all said, everything works up until I run "exec hello-world.ce". When this runs I get a "Segment No Found" error. I am currently trying to track the bug down in elfloader.c, but could use some help if anyone has seen this before.
Thanks
I Have faced the same problem . Now it works, but you have to check for the compiler version you are using . when i was using "msp430-gcc (GNU GCC patched mspgcc-20110716) 4.5.3" it doesn't work and i have got errors like that, when i used msp430-gcc version 4.6.3 it works fine

How to learn to use make? I'm never ever able to build sources with make and makefiles

I'm new to NX OSes, actually MacOS, and when I try to build sources with make and makefiles, I never can.
I try to run make, even try to run it passing the makefile as an argument, but all I get is "There's nothing for make to do"
Can you point me to a tutorial, reference, or something ?
This one is excellent.
(You can also read some criticism to round your knowledge.)
(If after reading these, you want to try cmake, then you want to go here. It works perfectly on Mac OS X.)
Generally if you're trying to install from a tarball there will be a file named README or INSTALL with installation instructions. Usually all you have to do is run from the terminal
./configure
make
sudo make install
It's generally possible to set options for compilation by adding flags to ./configure, to see what they are run
./configure --help
Here is a tutorial to help you get started.
Just remember to use tabs instead of spaces when indenting lines in the makefile :)

Resources