Finished configure:
EXPAT: using SYSTEM libraries
FFMPEG: using SYSTEM libraries
LAME: using SYSTEM libraries
LIBFLAC: using SYSTEM libraries
LIBID3TAG: using SYSTEM libraries
LIBMAD: using SYSTEM libraries
LIBNYQUIST: using LOCAL libraries
LIBRESAMPLE: disabled
LIBSAMPLERATE: using SYSTEM libraries
LIBSBSMS: using SYSTEM libraries
LIBSNDFILE: using SYSTEM libraries
LIBSOUNDTOUCH: using SYSTEM libraries
LIBSOXR: disabled
LIBTWOLAME: disabled
LIBVAMP: using SYSTEM libraries
LIBVORBIS: using SYSTEM libraries
LV2: using SYSTEM libraries
PORTAUDIO: using LOCAL libraries
PORTSMF: using SYSTEM libraries
WIDGETEXTRA: using LOCAL libraries
ladspa plugin support: enabled
audiounit plugin support: disabled
VST plugin support: enabled
prefix=/usr
The compile fails with:
../lib-src/libnyquist/libnyquist.a(fftlib.o): In function `fftrecurs':
fftlib.c:(.text+0x215): undefined reference to `bfstages'
fftlib.c:(.text+0x2c0): undefined reference to `bfstages'
../lib-src/libnyquist/libnyquist.a(fftlib.o): In function `ffts1':
fftlib.c:(.text+0x31e): undefined reference to `fft2pt'
fftlib.c:(.text+0x354): undefined reference to `fft4pt'
fftlib.c:(.text+0x38a): undefined reference to `fft8pt'
fftlib.c:(.text+0x3d0): undefined reference to `bitrevR2'
fftlib.c:(.text+0x43c): undefined reference to `bfR2'
fftlib.c:(.text+0x47b): undefined reference to `bfR4'
fftlib.c:(.text+0x4b1): undefined reference to `bfstages'
../lib-src/libnyquist/libnyquist.a(fftlib.o): In function `ifftrecurs':
fftlib.c:(.text+0x559): undefined reference to `ibfstages'
fftlib.c:(.text+0x604): undefined reference to `ibfstages'
../lib-src/libnyquist/libnyquist.a(fftlib.o): In function `iffts1':
fftlib.c:(.text+0x6c4): undefined reference to `ifft2pt'
fftlib.c:(.text+0x705): undefined reference to `ifft4pt'
fftlib.c:(.text+0x746): undefined reference to `ifft8pt'
fftlib.c:(.text+0x797): undefined reference to `scbitrevR2'
fftlib.c:(.text+0x803): undefined reference to `ibfR2'
fftlib.c:(.text+0x842): undefined reference to `ibfR4'
fftlib.c:(.text+0x878): undefined reference to `ibfstages'
../lib-src/libnyquist/libnyquist.a(fftlib.o): In function `rffts1':
fftlib.c:(.text+0x919): undefined reference to `rfft1pt'
fftlib.c:(.text+0x94c): undefined reference to `rfft2pt'
fftlib.c:(.text+0x982): undefined reference to `rfft4pt'
fftlib.c:(.text+0x9b8): undefined reference to `rfft8pt'
fftlib.c:(.text+0xa16): undefined reference to `scbitrevR2'
fftlib.c:(.text+0xa82): undefined reference to `bfR2'
fftlib.c:(.text+0xac1): undefined reference to `bfR4'
fftlib.c:(.text+0xaf7): undefined reference to `bfstages'
fftlib.c:(.text+0xb12): undefined reference to `frstage'
fftlib.c:(.text+0xb56): undefined reference to `frstage'
../lib-src/libnyquist/libnyquist.a(fftlib.o): In function `riffts1':
fftlib.c:(.text+0xc2c): undefined reference to `rifft1pt'
fftlib.c:(.text+0xc6a): undefined reference to `rifft2pt'
fftlib.c:(.text+0xcab): undefined reference to `rifft4pt'
fftlib.c:(.text+0xcec): undefined reference to `rifft8pt'
fftlib.c:(.text+0xd31): undefined reference to `ifrstage'
fftlib.c:(.text+0xd53): undefined reference to `scbitrevR2'
fftlib.c:(.text+0xdbf): undefined reference to `ibfR2'
fftlib.c:(.text+0xdfe): undefined reference to `ibfR4'
fftlib.c:(.text+0xe34): undefined reference to `ibfstages'
collect2: error: ld returned 1 exit status
Makefile:1863: recipe for target 'audacity' failed
make[2]: *** [audacity] Error 1
make[2]: Leaving directory '/usr/src/multimedia/audacity/audacity-minsrc-2.1.0/src'
Makefile:1269: recipe for target 'all' failed
make[1]: *** [all] Error 2
I built my Linux OS from source files. I installed wxgtk-2.8.12.1, which compiled with no issues.
Can anyone give me a clue as to why all these references are undefined?
Okay, so I installed wxWidgets-3.0.2 with no problems.
I then compiled audacity-2.1.1 and got this:
In file included from AudacityApp.cpp:26:0:
/usr/include/wx-3.0/wx/window.h:688:32: note: declared here
wxDEPRECATED( virtual void MakeModal(bool modal = true) );
^
/usr/include/wx-3.0/wx/defs.h:615:43: note: in definition of macro ‘wxDEPRECATED’
#define wxDEPRECATED(x) wxDEPRECATED_DECL x
^
AudacityApp.cpp:2159:1: warning: ‘virtual void wxWindowBase::SetInitialBestSize(const wxSize&)’ is deprecated: use SetInitialSize() instead. [-Wdeprecated-declarations]
}
^
In file included from /usr/include/wx-3.0/wx/nonownedwnd.h:14:0,
from /usr/include/wx-3.0/wx/toplevel.h:20,
from /usr/include/wx-3.0/wx/frame.h:18,
from /usr/include/wx-3.0/wx/docview.h:21,
from AudacityApp.cpp:29:
/usr/include/wx-3.0/wx/window.h:1872:13: note: declared here
inline void wxWindowBase::SetInitialBestSize(const wxSize& size)
^
In file included from AudacityApp.cpp:216:0:
../images/AudacityLogoWithName.xpm:2:21: warning: ‘AudacityLogoWithName_xpm’ defined but not used [-Wunused-variable]
static const char * AudacityLogoWithName_xpm[] = {
^
AudacityApp.cpp:228:13: warning: ‘void wxOnAssert(const wxChar*, int, const wxChar*)’ defined but not used [-Wunused-function]
static void wxOnAssert(const wxChar *fileName, int lineNumber, const wxChar *msg)
^
Makefile:2620: recipe for target 'audacity-AudacityApp.o' failed
make[2]: *** [audacity-AudacityApp.o] Error 1
make[2]: Leaving directory '/usr/src/multimedia/audacity/audacity-minsrc-2.1.1/src'
Makefile:1333: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/usr/src/multimedia/audacity/audacity-minsrc-2.1.1/src'
Makefile:716: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1
It doesn’t seem to have found any errors but has treated warnings as errors.
I looked at ./configure --help
but there doesn’t seem to be an option to not treat warnings as errors.
As Steve knows, the standard recommendation is to build 2.1.1 with wx2.8.12. Building 2.1.1 release with wx3 is not supported and will create many interface problems.
The developers have been working to fix our most serious wx3 issues, so the next 2.1.2 release of Audacity will support and require wx3.0.2.
This does not explain why 2.1.0 does not compile against wx2.8.12 but I suppose it could be something to do with “compiling Linux OS from source files”. What distro of Linux did you build? Is the problem something to do with installing a custom or unexpected fftlib?
If you don’t need a specific version of Audacity for a particular reason, I suggest you build Audacity HEAD (2.1.2-alpha) which is almost ready for release as Audacity 2.1.2 and believed quite stable.
Even if you succeed in compiling 2.1.1 against wx3.0.2 it will be highly buggy.
If there is some problem compiling HEAD on your system then we can see what we can do to fix it, given it’s our current code.
Please tell us more about your self-bullt Linux distro.
I downloaded the source files from github, as you suggested and compiled those.
I get errors from FFmpeg.h as follows:
In file included from AudacityApp.cpp:73:0:
FFmpeg.h: In function ‘AVOutputFormat* av_oformat_next(AVOutputFormat*)’:
FFmpeg.h:692:25: error: conflicting declaration of C function ‘AVOutputFormat* av_oformat_next(AVOutputFormat*)’
(AVOutputFormat *f),
^
FFmpeg.h:486:18: note: in definition of macro ‘FFMPEG_FUNCTION_WITH_RETURN’
inline r n a \
^
In file included from FFmpeg.h:44:0,
from AudacityApp.cpp:73:
/usr/include/libavformat/avformat.h:1916:17: note: previous declaration ‘AVOutputFormat* av_oformat_next(const AVOutputFormat*)’
AVOutputFormat *av_oformat_next(const AVOutputFormat *f);
^
In file included from AudacityApp.cpp:73:0:
FFmpeg.h: In function ‘int av_fifo_size(AVFifoBuffer*)’:
FFmpeg.h:759:23: error: conflicting declaration of C function ‘int av_fifo_size(AVFifoBuffer*)’
(AVFifoBuffer *f),
^
FFmpeg.h:486:18: note: in definition of macro ‘FFMPEG_FUNCTION_WITH_RETURN’
inline r n a \
^
In file included from FFmpeg.h:45:0,
from AudacityApp.cpp:73:
/usr/include/libavutil/fifo.h:76:5: note: previous declaration ‘int av_fifo_size(const AVFifoBuffer*)’
int av_fifo_size(const AVFifoBuffer *f);
^
In file included from AudacityApp.cpp:73:0:
FFmpeg.h: In function ‘AVDictionaryEntry* av_dict_get(AVDictionary*, const char*, const AVDictionaryEntry*, int)’:
FFmpeg.h:805:82: error: conflicting declaration of C function ‘AVDictionaryEntry* av_dict_get(AVDictionary*, const char*, const AVDictionaryEntry*, int)’
(AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags),
^
FFmpeg.h:486:18: note: in definition of macro ‘FFMPEG_FUNCTION_WITH_RETURN’
inline r n a \
^
In file included from /usr/include/libavcodec/avcodec.h:37:0,
from FFmpeg.h:43,
from AudacityApp.cpp:73:
/usr/include/libavutil/dict.h:104:20: note: previous declaration ‘AVDictionaryEntry* av_dict_get(const AVDictionary*, const char*, const AVDictionaryEntry*, int)’
AVDictionaryEntry *av_dict_get(const AVDictionary *m, const char *key,
^
AudacityApp.cpp: At global scope:
AudacityApp.cpp:240:13: warning: ‘void wxOnAssert(const wxChar*, int, const wxChar*)’ defined but not used [-Wunused-function]
static void wxOnAssert(const wxChar *fileName, int lineNumber, const wxChar *msg)
^
Makefile:2653: recipe for target 'audacity-AudacityApp.o' failed
make[2]: *** [audacity-AudacityApp.o] Error 1
In other words, compile your own build of a supported FFmpeg version. If you were to install it in usr/local Audacity should see it instead of FFmpeg 2.8.1 - but if you have built a custom bespoke version of Linux for yourself there are no guarantees about anything. If necessary you can adjust AVCODEC_CFLAGS, AVCODEC_LIBS, AVFORMAT_CFLAGS, AVFORMAT_LIBS, AVUTIL_CFLAGS and AVUTIL_LIBS via configure to find your own build of FFmpeg.
I compiled the github audacity source files against ffmpeg-2.3.6 (the latest version that you support) and wxWidgets-3.0.2 and it finished with no errors.
It installed with no issues and appears to work as expected.