audiowaveform icon indicating copy to clipboard operation
audiowaveform copied to clipboard

Alpine Static Build

Open dbpolito opened this issue 5 years ago • 11 comments

I'm trying to make a static build on Alpine but it fails here: https://github.com/bbc/audiowaveform/blob/master/cmake/modules/FindLibFLAC.cmake#L38

Even installing https://pkgs.alpinelinux.org/package/edge/main/x86/flac-dev

Btw, for static build on Alpine it's also required to install: zlib-dev libpng-dev.

I'm not very familiar with these kind of builds, some help appreciated.

Maybe i'm looking a the wrong lib, or needs to be compiled manually too.

dbpolito avatar Aug 14 '18 19:08 dbpolito

@chrisn Continuating the conversation from #75

What's the current release process? How are the binaries generated?

I would love to help, but i'm afraid i'm a bit stuck and need some help 😄

dbpolito avatar Aug 14 '18 19:08 dbpolito

Hi Daniel. I just tried a static build too. It fails because the alpine flac-dev package only contains a shared object (.so) and no static library (.a). So you'll have to build flac from source.

chrisn avatar Aug 14 '18 19:08 chrisn

What's the current release process? How are the binaries generated?

I only provide binaries for Ubuntu, which are built through Launchpad - I create and upload a source package, and Launchpad creates the binaries.

Each platform does it differently (CentOS has rpms, Alpine has apks). The details for how to do this for Alpine are here.

chrisn avatar Aug 14 '18 20:08 chrisn

I built flac manually and now i can do static builds on alpine, one thing that i noticed at tests:

/audiowaveform-master/build # ./audiowaveform_tests Running main() from gmock_main.cc [==========] Running 186 tests from 16 test cases. [----------] Global test environment set-up. [----------] 10 tests from AudioFileReaderTest [ RUN ] AudioFileReaderTest.shouldDisplayZeroPercentWhenFirstCalled [ OK ] AudioFileReaderTest.shouldDisplayZeroPercentWhenFirstCalled (0 ms) [ RUN ] AudioFileReaderTest.shouldUpdatePercentage [ OK ] AudioFileReaderTest.shouldUpdatePercentage (0 ms) [ RUN ] AudioFileReaderTest.shouldNotUpdatePercentageIfUnchanged [ OK ] AudioFileReaderTest.shouldNotUpdatePercentageIfUnchanged (0 ms) [ RUN ] AudioFileReaderTest.shouldAllowPercentageToDecrease [ OK ] AudioFileReaderTest.shouldAllowPercentageToDecrease (0 ms) [ RUN ] AudioFileReaderTest.shouldLimitPercentageAt0 [ OK ] AudioFileReaderTest.shouldLimitPercentageAt0 (0 ms) [ RUN ] AudioFileReaderTest.shouldLimitPercentageAt100 [ OK ] AudioFileReaderTest.shouldLimitPercentageAt100 (0 ms) [ RUN ] AudioFileReaderTest.shouldNotAssumeTotalIs100 [ OK ] AudioFileReaderTest.shouldNotAssumeTotalIs100 (0 ms) [ RUN ] AudioFileReaderTest.shouldDisplayPercentageAsWholeNumber [ OK ] AudioFileReaderTest.shouldDisplayPercentageAsWholeNumber (0 ms) [ RUN ] AudioFileReaderTest.shouldDisplayZeroIfTotalIsZero [ OK ] AudioFileReaderTest.shouldDisplayZeroIfTotalIsZero (0 ms) [ RUN ] AudioFileReaderTest.shouldAllowLargeNumbers [ OK ] AudioFileReaderTest.shouldAllowLargeNumbers (0 ms) [----------] 10 tests from AudioFileReaderTest (0 ms total)

[----------] 6 tests from GdImageRendererTest [ RUN ] GdImageRendererTest.shouldRenderImageWithAxisLabels [ OK ] GdImageRendererTest.shouldRenderImageWithAxisLabels (21 ms) [ RUN ] GdImageRendererTest.shouldRenderImageWithoutAxisLabels [ OK ] GdImageRendererTest.shouldRenderImageWithoutAxisLabels (19 ms) [ RUN ] GdImageRendererTest.shouldReportErrorIfImageWidthIsLessThanMinimum [ OK ] GdImageRendererTest.shouldReportErrorIfImageWidthIsLessThanMinimum (0 ms) [ RUN ] GdImageRendererTest.shouldReportErrorIfImageHeightIsLessThanMinimum [ OK ] GdImageRendererTest.shouldReportErrorIfImageHeightIsLessThanMinimum (0 ms) [ RUN ] GdImageRendererTest.shouldReportErrorIfSampleRateIsTooHigh [ OK ] GdImageRendererTest.shouldReportErrorIfSampleRateIsTooHigh (1 ms) [ RUN ] GdImageRendererTest.shouldReportErrorIfScaleIsTooHigh [ OK ] GdImageRendererTest.shouldReportErrorIfScaleIsTooHigh (0 ms) [----------] 6 tests from GdImageRendererTest (41 ms total)

[----------] 13 tests from MathUtilTest [ RUN ] MathUtilTest.shouldRoundDownToNearestInteger [ OK ] MathUtilTest.shouldRoundDownToNearestInteger (0 ms) [ RUN ] MathUtilTest.shouldRoundUpToNearestInteger [ OK ] MathUtilTest.shouldRoundUpToNearestInteger (0 ms) [ RUN ] MathUtilTest.shouldParseInteger [ OK ] MathUtilTest.shouldParseInteger (0 ms) [ RUN ] MathUtilTest.shouldParseIntegerWithPositiveSign [ OK ] MathUtilTest.shouldParseIntegerWithPositiveSign (0 ms) [ RUN ] MathUtilTest.shouldParseNegativeInteger [ OK ] MathUtilTest.shouldParseNegativeInteger (0 ms) [ RUN ] MathUtilTest.shouldParseDecimal [ OK ] MathUtilTest.shouldParseDecimal (0 ms) [ RUN ] MathUtilTest.shouldParseIntegerWithLeadingZeros [ OK ] MathUtilTest.shouldParseIntegerWithLeadingZeros (0 ms) [ RUN ] MathUtilTest.shouldParseSmallNumber [ OK ] MathUtilTest.shouldParseSmallNumber (0 ms) [ RUN ] MathUtilTest.shouldRejectEmptyString [ OK ] MathUtilTest.shouldRejectEmptyString (7 ms) [ RUN ] MathUtilTest.shouldRejectNonNumber [ OK ] MathUtilTest.shouldRejectNonNumber (0 ms) [ RUN ] MathUtilTest.shouldRejectNumberPrecededByWhitespace [ OK ] MathUtilTest.shouldRejectNumberPrecededByWhitespace (0 ms) [ RUN ] MathUtilTest.shouldRejectNumberFollowedByWhitespace [ OK ] MathUtilTest.shouldRejectNumberFollowedByWhitespace (0 ms) [ RUN ] MathUtilTest.shouldRejectNumberFollowedByText [ OK ] MathUtilTest.shouldRejectNumberFollowedByText (0 ms) [----------] 13 tests from MathUtilTest (7 ms total)

[----------] 8 tests from Mp3AudioFileReaderTest [ RUN ] Mp3AudioFileReaderTest.shouldOpenMp3File [ OK ] Mp3AudioFileReaderTest.shouldOpenMp3File (0 ms) [ RUN ] Mp3AudioFileReaderTest.shouldReportErrorIfFileNotFound [ OK ] Mp3AudioFileReaderTest.shouldReportErrorIfFileNotFound (0 ms) [ RUN ] Mp3AudioFileReaderTest.shouldFailToProcessIfFileNotOpen [ OK ] Mp3AudioFileReaderTest.shouldFailToProcessIfFileNotOpen (0 ms) [ RUN ] Mp3AudioFileReaderTest.shouldProcessStereoMp3File [ OK ] Mp3AudioFileReaderTest.shouldProcessStereoMp3File (10 ms) [ RUN ] Mp3AudioFileReaderTest.shouldProcessMonoMp3File [ OK ] Mp3AudioFileReaderTest.shouldProcessMonoMp3File (6 ms) [ RUN ] Mp3AudioFileReaderTest.shouldProcessMp3FileWithId3Tags [ OK ] Mp3AudioFileReaderTest.shouldProcessMp3FileWithId3Tags (1 ms) [ RUN ] Mp3AudioFileReaderTest.shouldAccountForDecodingDelay [ OK ] Mp3AudioFileReaderTest.shouldAccountForDecodingDelay (10 ms) [ RUN ] Mp3AudioFileReaderTest.shouldNotProcessFileMoreThanOnce [ OK ] Mp3AudioFileReaderTest.shouldNotProcessFileMoreThanOnce (6 ms) [----------] 8 tests from Mp3AudioFileReaderTest (33 ms total)

[----------] 59 tests from OptionsTest [ RUN ] OptionsTest.shouldReportErrorIfNoOptionsGiven [ OK ] OptionsTest.shouldReportErrorIfNoOptionsGiven (0 ms) [ RUN ] OptionsTest.shouldReturnFilenamesWithLongArgs [ OK ] OptionsTest.shouldReturnFilenamesWithLongArgs (0 ms) [ RUN ] OptionsTest.shouldReturnFilenamesWithShortArgs [ OK ] OptionsTest.shouldReturnFilenamesWithShortArgs (0 ms) [ RUN ] OptionsTest.shouldDisplayErrorIfMissingInputFilename [ OK ] OptionsTest.shouldDisplayErrorIfMissingInputFilename (0 ms) [ RUN ] OptionsTest.shouldDisplayErrorIfMissingOutputFilename [ OK ] OptionsTest.shouldDisplayErrorIfMissingOutputFilename (0 ms) [ RUN ] OptionsTest.shouldReturnDefaultOptions [ OK ] OptionsTest.shouldReturnDefaultOptions (0 ms) [ RUN ] OptionsTest.shouldReturnStartTimeWithLongArg [ OK ] OptionsTest.shouldReturnStartTimeWithLongArg (0 ms) [ RUN ] OptionsTest.shouldReturnStartTimeWithShortArg [ OK ] OptionsTest.shouldReturnStartTimeWithShortArg (0 ms) [ RUN ] OptionsTest.shouldDisplayErrorIfInvalidStartTime [ OK ] OptionsTest.shouldDisplayErrorIfInvalidStartTime (1 ms) [ RUN ] OptionsTest.shouldDisplayErrorIfMissingStartTime [ OK ] OptionsTest.shouldDisplayErrorIfMissingStartTime (0 ms) [ RUN ] OptionsTest.shouldReturnEndTimeWithLongArg [ OK ] OptionsTest.shouldReturnEndTimeWithLongArg (0 ms) [ RUN ] OptionsTest.shouldReturnEndTimeWithShortArg [ OK ] OptionsTest.shouldReturnEndTimeWithShortArg (0 ms) [ RUN ] OptionsTest.shouldDisplayErrorIfInvalidEndTime [ OK ] OptionsTest.shouldDisplayErrorIfInvalidEndTime (0 ms) [ RUN ] OptionsTest.shouldDisplayErrorIfMissingEndTime [ OK ] OptionsTest.shouldDisplayErrorIfMissingEndTime (0 ms) [ RUN ] OptionsTest.shouldReturnDefaultEndTime [ OK ] OptionsTest.shouldReturnDefaultEndTime (0 ms) [ RUN ] OptionsTest.shouldReturnWidthWithLongArg [ OK ] OptionsTest.shouldReturnWidthWithLongArg (0 ms) [ RUN ] OptionsTest.shouldReturnWidthWithShortArg [ OK ] OptionsTest.shouldReturnWidthWithShortArg (0 ms) [ RUN ] OptionsTest.shouldDisplayErrorIfInvalidWidth [ OK ] OptionsTest.shouldDisplayErrorIfInvalidWidth (0 ms) [ RUN ] OptionsTest.shouldDisplayErrorIfMissingWidth [ OK ] OptionsTest.shouldDisplayErrorIfMissingWidth (0 ms) [ RUN ] OptionsTest.shouldReturnHeightWithLongArg [ OK ] OptionsTest.shouldReturnHeightWithLongArg (0 ms) [ RUN ] OptionsTest.shouldReturnHeightWithShortArg [ OK ] OptionsTest.shouldReturnHeightWithShortArg (1 ms) [ RUN ] OptionsTest.shouldDisplayErrorIfInvalidHeight [ OK ] OptionsTest.shouldDisplayErrorIfInvalidHeight (0 ms) [ RUN ] OptionsTest.shouldDisplayErrorIfMissingHeight [ OK ] OptionsTest.shouldDisplayErrorIfMissingHeight (0 ms) [ RUN ] OptionsTest.shouldReturnDefaultAmplitudeScale [ OK ] OptionsTest.shouldReturnDefaultAmplitudeScale (0 ms) [ RUN ] OptionsTest.shouldReturnAmplitudeScale [ OK ] OptionsTest.shouldReturnAmplitudeScale (0 ms) [ RUN ] OptionsTest.shouldReturnAutoAmplitudeScale [ OK ] OptionsTest.shouldReturnAutoAmplitudeScale (0 ms) [ RUN ] OptionsTest.shouldDisplayErrorIfAmplitudeScaleInvalid [ OK ] OptionsTest.shouldDisplayErrorIfAmplitudeScaleInvalid (0 ms) [ RUN ] OptionsTest.shouldDisplayErrorIfAmplitudeScaleIsNegative [ OK ] OptionsTest.shouldDisplayErrorIfAmplitudeScaleIsNegative (1 ms) [ RUN ] OptionsTest.shouldReturnZoomWithLongArg [ OK ] OptionsTest.shouldReturnZoomWithLongArg (0 ms) [ RUN ] OptionsTest.shouldReturnZoomWithShortArg [ OK ] OptionsTest.shouldReturnZoomWithShortArg (0 ms) [ RUN ] OptionsTest.shouldReturnDefaultZoomOption [ OK ] OptionsTest.shouldReturnDefaultZoomOption (0 ms) [ RUN ] OptionsTest.shouldReturnAutoZoomOption [ OK ] OptionsTest.shouldReturnAutoZoomOption (0 ms) [ RUN ] OptionsTest.shouldDisplayErrorIfInvalidZoom [ OK ] OptionsTest.shouldDisplayErrorIfInvalidZoom (0 ms) [ RUN ] OptionsTest.shouldDisplayErrorIfZoomValueTooLarge [ OK ] OptionsTest.shouldDisplayErrorIfZoomValueTooLarge (1 ms) [ RUN ] OptionsTest.shouldDisplayErrorIfMissingZoom [ OK ] OptionsTest.shouldDisplayErrorIfMissingZoom (0 ms) [ RUN ] OptionsTest.shouldReturnPixelsPerSecond [ OK ] OptionsTest.shouldReturnPixelsPerSecond (0 ms) [ RUN ] OptionsTest.shouldReturnDefaultPixelsPerSecondOption [ OK ] OptionsTest.shouldReturnDefaultPixelsPerSecondOption (0 ms) [ RUN ] OptionsTest.shouldDisplayErrorIfInvalidPixelsPerSecond [ OK ] OptionsTest.shouldDisplayErrorIfInvalidPixelsPerSecond (0 ms) [ RUN ] OptionsTest.shouldDisplayErrorIfMissingPixelsPerSecond [ OK ] OptionsTest.shouldDisplayErrorIfMissingPixelsPerSecond (1 ms) [ RUN ] OptionsTest.shouldDisplayErrorIfPixelsPerSecondValueTooLarge [ OK ] OptionsTest.shouldDisplayErrorIfPixelsPerSecondValueTooLarge (0 ms) [ RUN ] OptionsTest.shouldReturnBitsWithLongArg [ OK ] OptionsTest.shouldReturnBitsWithLongArg (0 ms) [ RUN ] OptionsTest.shouldReturnBitsWithShortArg [ OK ] OptionsTest.shouldReturnBitsWithShortArg (0 ms) [ RUN ] OptionsTest.shouldDisplayErrorIfBitsInvalid [ OK ] OptionsTest.shouldDisplayErrorIfBitsInvalid (0 ms) [ RUN ] OptionsTest.shouldDisplayErrorIfInvalidBits [ OK ] OptionsTest.shouldDisplayErrorIfInvalidBits (0 ms) [ RUN ] OptionsTest.shouldDisplayErrorIfMissingBits [ OK ] OptionsTest.shouldDisplayErrorIfMissingBits (0 ms) [ RUN ] OptionsTest.shouldReturnDefaultBitsOption [ OK ] OptionsTest.shouldReturnDefaultBitsOption (1 ms) [ RUN ] OptionsTest.shouldDisableAxisLabelRendering [ OK ] OptionsTest.shouldDisableAxisLabelRendering (0 ms) [ RUN ] OptionsTest.shouldEnableAxisLabelRendering [ OK ] OptionsTest.shouldEnableAxisLabelRendering (0 ms) [ RUN ] OptionsTest.shouldEnableAxisLabelRenderingByDefault [ OK ] OptionsTest.shouldEnableAxisLabelRenderingByDefault (0 ms) [ RUN ] OptionsTest.shouldReturnDefaultPngCompressionLevel [ OK ] OptionsTest.shouldReturnDefaultPngCompressionLevel (0 ms) [ RUN ] OptionsTest.shouldReturnPngCompressionLevel [ OK ] OptionsTest.shouldReturnPngCompressionLevel (0 ms) [ RUN ] OptionsTest.shouldDisplayErrorIfInvalidPngCompressionLevel [ OK ] OptionsTest.shouldDisplayErrorIfInvalidPngCompressionLevel (0 ms) [ RUN ] OptionsTest.shouldReturnHelpFlag [ OK ] OptionsTest.shouldReturnHelpFlag (1 ms) [ RUN ] OptionsTest.shouldReturnVersionFlagWithLongArg [ OK ] OptionsTest.shouldReturnVersionFlagWithLongArg (0 ms) [ RUN ] OptionsTest.shouldReturnVersionFlagWithShortArg [ OK ] OptionsTest.shouldReturnVersionFlagWithShortArg (0 ms) [ RUN ] OptionsTest.shouldDisplayErrorIfUnknownLongArg [ OK ] OptionsTest.shouldDisplayErrorIfUnknownLongArg (0 ms) [ RUN ] OptionsTest.shouldDisplayErrorIfUnknownShortArg [ OK ] OptionsTest.shouldDisplayErrorIfUnknownShortArg (0 ms) [ RUN ] OptionsTest.shouldOutputVersionInfo [ OK ] OptionsTest.shouldOutputVersionInfo (0 ms) [ RUN ] OptionsTest.shouldOutputUsageInfo [ OK ] OptionsTest.shouldOutputUsageInfo (0 ms) [----------] 59 tests from OptionsTest (9 ms total)

[----------] 34 tests from OptionHandlerTest [ RUN ] OptionHandlerTest.shouldConvertMp3ToWavAudio /audiowaveform-master/test/OptionHandlerTest.cpp:78: Failure Value of: test_data[i] Expected: is equal to '\xD5' (213) Actual: '\xD0' (208) (of type unsigned char) [ FAILED ] OptionHandlerTest.shouldConvertMp3ToWavAudio (7 ms) [ RUN ] OptionHandlerTest.shouldNotConvertWavToMp3Audio [ OK ] OptionHandlerTest.shouldNotConvertWavToMp3Audio (0 ms) [ RUN ] OptionHandlerTest.shouldGenerateBinaryWaveformDataFromWavAudio [ OK ] OptionHandlerTest.shouldGenerateBinaryWaveformDataFromWavAudio (16 ms) [ RUN ] OptionHandlerTest.shouldGenerateBinaryWaveformDataFromFloatingPointWavAudio [ OK ] OptionHandlerTest.shouldGenerateBinaryWaveformDataFromFloatingPointWavAudio (14 ms) [ RUN ] OptionHandlerTest.shouldGenerateBinaryWaveformDataFromMp3Audio /audiowaveform-master/test/OptionHandlerTest.cpp:78: Failure Value of: test_data[i] Expected: is equal to '\x6' (6) Actual: '\x5' (5) (of type unsigned char) [ FAILED ] OptionHandlerTest.shouldGenerateBinaryWaveformDataFromMp3Audio (12 ms) [ RUN ] OptionHandlerTest.shouldGenerateBinaryWaveformDataFromFlacAudio [ OK ] OptionHandlerTest.shouldGenerateBinaryWaveformDataFromFlacAudio (21 ms) [ RUN ] OptionHandlerTest.shouldGenerateBinaryWaveformDataFromOggVorbisAudio [ OK ] OptionHandlerTest.shouldGenerateBinaryWaveformDataFromOggVorbisAudio (31 ms) [ RUN ] OptionHandlerTest.shouldGenerateJsonWaveformDataFromWavAudio [ OK ] OptionHandlerTest.shouldGenerateJsonWaveformDataFromWavAudio (44 ms) [ RUN ] OptionHandlerTest.shouldGenerateJsonWaveformDataFromMp3Audio /audiowaveform-master/test/OptionHandlerTest.cpp:73: Failure Value of: test_data.size() Expected: is equal to 10666 Actual: 10665 (of type unsigned long) [ FAILED ] OptionHandlerTest.shouldGenerateJsonWaveformDataFromMp3Audio (14 ms) [ RUN ] OptionHandlerTest.shouldGenerateJsonWaveformDataFromFlacAudio [ OK ] OptionHandlerTest.shouldGenerateJsonWaveformDataFromFlacAudio (53 ms) [ RUN ] OptionHandlerTest.shouldGenerateJsonWaveformDataFromOggVorbisAudio [ OK ] OptionHandlerTest.shouldGenerateJsonWaveformDataFromOggVorbisAudio (58 ms) [ RUN ] OptionHandlerTest.shouldConvertBinaryWaveformDataToJson [ OK ] OptionHandlerTest.shouldConvertBinaryWaveformDataToJson (38 ms) [ RUN ] OptionHandlerTest.shouldConvertBinaryWaveformDataToText [ OK ] OptionHandlerTest.shouldConvertBinaryWaveformDataToText (36 ms) [ RUN ] OptionHandlerTest.shouldNotConvertJsonWaveformDataToBinary [ OK ] OptionHandlerTest.shouldNotConvertJsonWaveformDataToBinary (0 ms) [ RUN ] OptionHandlerTest.shouldNotConvertJsonWaveformDataToText [ OK ] OptionHandlerTest.shouldNotConvertJsonWaveformDataToText (0 ms) [ RUN ] OptionHandlerTest.shouldNotConvertTextWaveformDataToBinary [ OK ] OptionHandlerTest.shouldNotConvertTextWaveformDataToBinary (1 ms) [ RUN ] OptionHandlerTest.shouldNotConvertTextWaveformDataToJson [ OK ] OptionHandlerTest.shouldNotConvertTextWaveformDataToJson (0 ms) [ RUN ] OptionHandlerTest.shouldRenderWaveformImageFromBinaryWaveformData [ OK ] OptionHandlerTest.shouldRenderWaveformImageFromBinaryWaveformData (375 ms) [ RUN ] OptionHandlerTest.shouldRenderWaveformImageFromFloatingPointWavAudio [ OK ] OptionHandlerTest.shouldRenderWaveformImageFromFloatingPointWavAudio (323 ms) [ RUN ] OptionHandlerTest.shouldRenderWaveformImageFromWavAudio [ OK ] OptionHandlerTest.shouldRenderWaveformImageFromWavAudio (329 ms) [ RUN ] OptionHandlerTest.shouldRenderWaveformImageFromMp3Audio /audiowaveform-master/test/OptionHandlerTest.cpp:138: Failure Value of: test_pixel Expected: is equal to 4148635 Actual: 14079702 (of type int) [ FAILED ] OptionHandlerTest.shouldRenderWaveformImageFromMp3Audio (121 ms) [ RUN ] OptionHandlerTest.shouldRenderWaveformImageFromFlacAudio [ OK ] OptionHandlerTest.shouldRenderWaveformImageFromFlacAudio (362 ms) [ RUN ] OptionHandlerTest.shouldRenderWaveformImageFromOggVorbisAudio [ OK ] OptionHandlerTest.shouldRenderWaveformImageFromOggVorbisAudio (355 ms) [ RUN ] OptionHandlerTest.shouldRenderWaveformWithColorScheme [ OK ] OptionHandlerTest.shouldRenderWaveformWithColorScheme (321 ms) [ RUN ] OptionHandlerTest.shouldRenderWaveformWithSpecifiedColors [ OK ] OptionHandlerTest.shouldRenderWaveformWithSpecifiedColors (358 ms) [ RUN ] OptionHandlerTest.shouldRenderWaveformWithNoAxisLabels [ OK ] OptionHandlerTest.shouldRenderWaveformWithNoAxisLabels (323 ms) [ RUN ] OptionHandlerTest.shouldRenderWaveformWithFixedAmplitudeScale [ OK ] OptionHandlerTest.shouldRenderWaveformWithFixedAmplitudeScale (318 ms) [ RUN ] OptionHandlerTest.shouldRenderWaveformWithAutoAmplitudeScale [ OK ] OptionHandlerTest.shouldRenderWaveformWithAutoAmplitudeScale (336 ms) [ RUN ] OptionHandlerTest.shouldRenderWaveformFitToImageWidth /audiowaveform-master/test/OptionHandlerTest.cpp:138: Failure Value of: test_pixel Expected: is equal to 4148635 Actual: 14079702 (of type int) [ FAILED ] OptionHandlerTest.shouldRenderWaveformFitToImageWidth (53 ms) [ RUN ] OptionHandlerTest.shouldNotRenderWaveformImageFromJsonWaveformData [ OK ] OptionHandlerTest.shouldNotRenderWaveformImageFromJsonWaveformData (0 ms) [ RUN ] OptionHandlerTest.shouldNotRenderWaveformImageFromTextWaveformData [ OK ] OptionHandlerTest.shouldNotRenderWaveformImageFromTextWaveformData (0 ms) [ RUN ] OptionHandlerTest.shouldFailIfZoomIsZero [ OK ] OptionHandlerTest.shouldFailIfZoomIsZero (0 ms) [ RUN ] OptionHandlerTest.shouldFailIfPixelsPerSecondIsZero [ OK ] OptionHandlerTest.shouldFailIfPixelsPerSecondIsZero (1 ms) [ RUN ] OptionHandlerTest.shouldFailIfPixelsPerSecondIsNegative [ OK ] OptionHandlerTest.shouldFailIfPixelsPerSecondIsNegative (0 ms) [----------] 34 tests from OptionHandlerTest (3920 ms total)

[----------] 6 tests from RgbaTest [ RUN ] RgbaTest.shouldParseColorWithDigits [ OK ] RgbaTest.shouldParseColorWithDigits (0 ms) [ RUN ] RgbaTest.shouldParseColorWithTransparency [ OK ] RgbaTest.shouldParseColorWithTransparency (0 ms) [ RUN ] RgbaTest.shouldParseColorWithLowerCaseHex [ OK ] RgbaTest.shouldParseColorWithLowerCaseHex (0 ms) [ RUN ] RgbaTest.shouldParseColorWithUpperCaseHex [ OK ] RgbaTest.shouldParseColorWithUpperCaseHex (0 ms) [ RUN ] RgbaTest.shouldThrowIfEmptyString [ OK ] RgbaTest.shouldThrowIfEmptyString (0 ms) [ RUN ] RgbaTest.shouldThrowIfNotAValidColor [ OK ] RgbaTest.shouldThrowIfNotAValidColor (0 ms) [----------] 6 tests from RgbaTest (0 ms total)

[----------] 10 tests from SndFileAudioFileReaderTest [ RUN ] SndFileAudioFileReaderTest.shouldOpenWavFile [ OK ] SndFileAudioFileReaderTest.shouldOpenWavFile (0 ms) [ RUN ] SndFileAudioFileReaderTest.shouldOpenFlacFile [ OK ] SndFileAudioFileReaderTest.shouldOpenFlacFile (0 ms) [ RUN ] SndFileAudioFileReaderTest.shouldReportErrorIfFileNotFound [ OK ] SndFileAudioFileReaderTest.shouldReportErrorIfFileNotFound (0 ms) [ RUN ] SndFileAudioFileReaderTest.shouldFailToProcessIfFileNotOpen [ OK ] SndFileAudioFileReaderTest.shouldFailToProcessIfFileNotOpen (0 ms) [ RUN ] SndFileAudioFileReaderTest.shouldProcessStereoWavFile [ OK ] SndFileAudioFileReaderTest.shouldProcessStereoWavFile (1 ms) [ RUN ] SndFileAudioFileReaderTest.shouldProcessStereoFlacFile [ OK ] SndFileAudioFileReaderTest.shouldProcessStereoFlacFile (3 ms) [ RUN ] SndFileAudioFileReaderTest.shouldProcessMonoWavFile [ OK ] SndFileAudioFileReaderTest.shouldProcessMonoWavFile (0 ms) [ RUN ] SndFileAudioFileReaderTest.shouldProcessMonoFlacFile [ OK ] SndFileAudioFileReaderTest.shouldProcessMonoFlacFile (2 ms) [ RUN ] SndFileAudioFileReaderTest.shouldNotProcessFileMoreThanOnce [ OK ] SndFileAudioFileReaderTest.shouldNotProcessFileMoreThanOnce (0 ms) [ RUN ] SndFileAudioFileReaderTest.shouldReportErrorIfNotAWavFile [ OK ] SndFileAudioFileReaderTest.shouldReportErrorIfNotAWavFile (0 ms) [----------] 10 tests from SndFileAudioFileReaderTest (6 ms total)

[----------] 1 test from TimeUtilTest [ RUN ] TimeUtilTest.shouldConvertSecondsToString [ OK ] TimeUtilTest.shouldConvertSecondsToString (0 ms) [----------] 1 test from TimeUtilTest (0 ms total)

[----------] 3 tests from WavFileWriterTest [ RUN ] WavFileWriterTest.shouldCreateEmptyWavFile [ OK ] WavFileWriterTest.shouldCreateEmptyWavFile (1 ms) [ RUN ] WavFileWriterTest.shouldCreateMonoWavFile [ OK ] WavFileWriterTest.shouldCreateMonoWavFile (0 ms) [ RUN ] WavFileWriterTest.shouldReportErrorIfUnableToCreateFile [ OK ] WavFileWriterTest.shouldReportErrorIfUnableToCreateFile (0 ms) [----------] 3 tests from WavFileWriterTest (1 ms total)

[----------] 9 tests from WaveformBufferTest [ RUN ] WaveformBufferTest.shouldConstructWithDefaultState [ OK ] WaveformBufferTest.shouldConstructWithDefaultState (0 ms) [ RUN ] WaveformBufferTest.shouldLoadValid16BitDataFile [ OK ] WaveformBufferTest.shouldLoadValid16BitDataFile (0 ms) [ RUN ] WaveformBufferTest.shouldLoadValid8BitDataFile [ OK ] WaveformBufferTest.shouldLoadValid8BitDataFile (0 ms) [ RUN ] WaveformBufferTest.shouldNotLoadDataFileIfNotVersion1 [ OK ] WaveformBufferTest.shouldNotLoadDataFileIfNotVersion1 (0 ms) [ RUN ] WaveformBufferTest.shouldReportErrorIfSizeMismatch [ OK ] WaveformBufferTest.shouldReportErrorIfSizeMismatch (0 ms) [ RUN ] WaveformBufferTest.shouldReportErrorIfFileNotFound [ OK ] WaveformBufferTest.shouldReportErrorIfFileNotFound (1 ms) [ RUN ] WaveformBufferTest.shouldNotLoadDataFileWithSampleRateBelowMinimum [ OK ] WaveformBufferTest.shouldNotLoadDataFileWithSampleRateBelowMinimum (0 ms) [ RUN ] WaveformBufferTest.shouldNotLoadDataFileWithSamplesPerPixelBelowMinimum [ OK ] WaveformBufferTest.shouldNotLoadDataFileWithSamplesPerPixelBelowMinimum (0 ms) [ RUN ] WaveformBufferTest.shouldLoadDataFileIfSizeIsZero [ OK ] WaveformBufferTest.shouldLoadDataFileIfSizeIsZero (0 ms) [----------] 9 tests from WaveformBufferTest (1 ms total)

[----------] 8 tests from WaveformBufferSaveTest [ RUN ] WaveformBufferSaveTest.shouldSaveEmptyDataFile [ OK ] WaveformBufferSaveTest.shouldSaveEmptyDataFile (0 ms) [ RUN ] WaveformBufferSaveTest.shouldSave16BitDataFile [ OK ] WaveformBufferSaveTest.shouldSave16BitDataFile (0 ms) [ RUN ] WaveformBufferSaveTest.shouldSave8BitDataFile [ OK ] WaveformBufferSaveTest.shouldSave8BitDataFile (0 ms) [ RUN ] WaveformBufferSaveTest.shouldReportErrorIfNot8Or16Bits [ OK ] WaveformBufferSaveTest.shouldReportErrorIfNot8Or16Bits (0 ms) [ RUN ] WaveformBufferSaveTest.shouldSave16BitTextFile [ OK ] WaveformBufferSaveTest.shouldSave16BitTextFile (1 ms) [ RUN ] WaveformBufferSaveTest.shouldSave8BitTextFile [ OK ] WaveformBufferSaveTest.shouldSave8BitTextFile (0 ms) [ RUN ] WaveformBufferSaveTest.shouldSave16BitJsonFile [ OK ] WaveformBufferSaveTest.shouldSave16BitJsonFile (0 ms) [ RUN ] WaveformBufferSaveTest.shouldSave8BitJsonFile [ OK ] WaveformBufferSaveTest.shouldSave8BitJsonFile (0 ms) [----------] 8 tests from WaveformBufferSaveTest (1 ms total)

[----------] 3 tests from DurationScaleFactorTest [ RUN ] DurationScaleFactorTest.shouldThrowIfEndTimeLessThanStartTime [ OK ] DurationScaleFactorTest.shouldThrowIfEndTimeLessThanStartTime (0 ms) [ RUN ] DurationScaleFactorTest.shouldThrowIfWidthIsZero [ OK ] DurationScaleFactorTest.shouldThrowIfWidthIsZero (0 ms) [ RUN ] DurationScaleFactorTest.shouldThrowIfWidthIsNegative [ OK ] DurationScaleFactorTest.shouldThrowIfWidthIsNegative (0 ms) [----------] 3 tests from DurationScaleFactorTest (0 ms total)

[----------] 3 tests from PixelsPerSecondScaleFactorTest [ RUN ] PixelsPerSecondScaleFactorTest.shouldThrowIfZero [ OK ] PixelsPerSecondScaleFactorTest.shouldThrowIfZero (0 ms) [ RUN ] PixelsPerSecondScaleFactorTest.shouldThrowIfNegative [ OK ] PixelsPerSecondScaleFactorTest.shouldThrowIfNegative (0 ms) [ RUN ] PixelsPerSecondScaleFactorTest.shouldNotThrowIfPositive [ OK ] PixelsPerSecondScaleFactorTest.shouldNotThrowIfPositive (0 ms) [----------] 3 tests from PixelsPerSecondScaleFactorTest (0 ms total)

[----------] 10 tests from WaveformGeneratorTest [ RUN ] WaveformGeneratorTest.shouldFailIfSamplesPerPixelIsNegative [ OK ] WaveformGeneratorTest.shouldFailIfSamplesPerPixelIsNegative (0 ms) [ RUN ] WaveformGeneratorTest.shouldFailIfSamplesPerPixelIsZero [ OK ] WaveformGeneratorTest.shouldFailIfSamplesPerPixelIsZero (0 ms) [ RUN ] WaveformGeneratorTest.shouldFailIfSamplesPerPixelIsOne [ OK ] WaveformGeneratorTest.shouldFailIfSamplesPerPixelIsOne (0 ms) [ RUN ] WaveformGeneratorTest.shouldSucceedIfSamplesPerPixelIsTwo [ OK ] WaveformGeneratorTest.shouldSucceedIfSamplesPerPixelIsTwo (0 ms) [ RUN ] WaveformGeneratorTest.shouldSucceedIfSamplesPerPixelIsLarge [ OK ] WaveformGeneratorTest.shouldSucceedIfSamplesPerPixelIsLarge (0 ms) [ RUN ] WaveformGeneratorTest.shouldSucceedIfEndTimeGreaterThanStartTime [ OK ] WaveformGeneratorTest.shouldSucceedIfEndTimeGreaterThanStartTime (0 ms) [ RUN ] WaveformGeneratorTest.shouldFailIfSamplesPerPixelIsTooSmall [ OK ] WaveformGeneratorTest.shouldFailIfSamplesPerPixelIsTooSmall (0 ms) [ RUN ] WaveformGeneratorTest.shouldSetBufferAttributes [ OK ] WaveformGeneratorTest.shouldSetBufferAttributes (0 ms) [ RUN ] WaveformGeneratorTest.shouldComputeMaxAndMinValuesFromStereoInput [ OK ] WaveformGeneratorTest.shouldComputeMaxAndMinValuesFromStereoInput (0 ms) [ RUN ] WaveformGeneratorTest.shouldComputeMaxAndMinValuesFromMonoInput [ OK ] WaveformGeneratorTest.shouldComputeMaxAndMinValuesFromMonoInput (0 ms) [----------] 10 tests from WaveformGeneratorTest (1 ms total)

[----------] 3 tests from WaveformRescalerTest [ RUN ] WaveformRescalerTest.shouldRescaleWaveformData [ OK ] WaveformRescalerTest.shouldRescaleWaveformData (0 ms) [ RUN ] WaveformRescalerTest.shouldRescale8BitWaveformData [ OK ] WaveformRescalerTest.shouldRescale8BitWaveformData (0 ms) [ RUN ] WaveformRescalerTest.shouldRescale16BitWaveformData [ OK ] WaveformRescalerTest.shouldRescale16BitWaveformData (0 ms) [----------] 3 tests from WaveformRescalerTest (0 ms total)

[----------] Global test environment tear-down [==========] 186 tests from 16 test cases ran. (4021 ms total) [ PASSED ] 181 tests. [ FAILED ] 5 tests, listed below: [ FAILED ] OptionHandlerTest.shouldConvertMp3ToWavAudio [ FAILED ] OptionHandlerTest.shouldGenerateBinaryWaveformDataFromMp3Audio [ FAILED ] OptionHandlerTest.shouldGenerateJsonWaveformDataFromMp3Audio [ FAILED ] OptionHandlerTest.shouldRenderWaveformImageFromMp3Audio [ FAILED ] OptionHandlerTest.shouldRenderWaveformFitToImageWidth

5 FAILED TESTS


Not sure it's related to a version, or to the distro itself.

My full Alpine 3.7 build script:

apk add --no-cache curl make cmake g++ libtool gettext autoconf automake libid3tag-dev libmad-dev libsndfile-dev gd-dev boost-dev zlib-dev libpng-dev

curl -L "https://github.com/bbc/audiowaveform/archive/master.tar.gz" -o "audiowaveform-master.tgz"
tar xzf audiowaveform-master.tgz
cd audiowaveform-master

curl -L "https://github.com/google/googletest/archive/release-1.8.0.tar.gz" -o "googletest-release-1.8.0.tgz"
tar xzf googletest-release-1.8.0.tgz
ln -s googletest-release-1.8.0/googletest googletest
ln -s googletest-release-1.8.0/googlemock googlemock

curl -L "https://github.com/xiph/flac/archive/1.3.2.tar.gz" -o "flac-1.3.2.tgz"
tar zxf flac-1.3.2.tgz
cd flac-1.3.2
./autogen.sh
./configure --enable-shared=no
make
make check
make install
cd ../

mkdir build
cd build
cmake -D BUILD_STATIC=1 ..
make
make install
./audiowaveform

dbpolito avatar Aug 15 '18 17:08 dbpolito

It's great to see you have it building now. I develop the software on Ubuntu, and all the tests pass there. These test failures all relate to MP3 decoding, so it seems like libmad is behaving differently on Alpine.

chrisn avatar Aug 15 '18 19:08 chrisn

I am having trouble running the static binary in an Alpine environment that does not have the requirements installed.

The build is successful and the binary executes just fine on the machine where it was built. The problem is when I move over the binary to a new, identical Alpine environment but without the requirements (libid3tag-dev libmad-dev libsndfile-dev gd-dev boost-dev) it throws a lot of errors. (see further below).

Q - Do static builds really contain everything needed or do I still have to install them over in the new environment as well?

The reason I ask is because the sole purpose of the static built in my use case was to keep a clean and small environment, but if I still have to install the requirements, it would defeat this very purpose.

Any help or clarification on this matter is greatly appreciated. Thank you!


  • My build output:
# mkdir build
# cd build
# cmake -D ENABLE_TESTS=0 -D BUILD_STATIC=1 ..
-- The C compiler identification is GNU 6.4.0
-- The CXX compiler identification is GNU 6.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Build type not specified: default is Release
-- CMAKE_VERSION=3.9.5
-- Build type: Release
-- CMAKE_MODULE_PATH='/audiowaveform-master/cmake/modules'
-- Building version 1.2.2
-- Static build
-- Found ZLIB: /lib/libz.a (found version "1.2.11")
-- Found PNG: /usr/lib/libpng.a (found version "1.6.34")
-- Found LibGD: /usr/lib/libgd.a;/usr/lib/libpng.a;/lib/libz.a
-- LIBGD_INCLUDE_DIRS='/usr/include;/usr/include;/usr/include'
-- LIBGD_LIBRARIES=/usr/lib/libgd.a;/usr/lib/libpng.a;/lib/libz.a
-- Found LibFLAC: /usr/local/lib/libFLAC.a
-- Found LibVorbis: /usr/lib/libvorbis.a;/usr/lib/libvorbisenc.a
-- Found LibOGG: /usr/lib/libogg.a
-- Found LibSndFile: /usr/lib/libsndfile.a;/usr/local/lib/libFLAC.a;/usr/lib/libvorbis.a;/usr/lib/libvorbisenc.a;/usr/lib/libogg.a
-- LIBSNDFILE_INCLUDE_DIRS='/usr/include;/usr/local/include;/usr/include;/usr/include'
-- LIBSNDFILE_LIBRARIES=/usr/lib/libsndfile.a;/usr/local/lib/libFLAC.a;/usr/lib/libvorbis.a;/usr/lib/libvorbisenc.a;/usr/lib/libogg.a
-- Found LibMad: /usr/lib/libmad.a
-- LIBMAD_INCLUDE_DIRS='/usr/include'
-- LIBMAD_LIBRARIES=/usr/lib/libmad.a
-- Found LibId3Tag: /usr/lib/libid3tag.a;/lib/libz.a
-- LIBID3TAG_INCLUDE_DIRS='/usr/include;/usr/include'
-- LIBID3TAG_LIBRARIES=/usr/lib/libid3tag.a;/lib/libz.a
-- Boost version: 1.62.0
-- Found the following Boost libraries:
--   program_options
--   filesystem
--   regex
--   system
-- Boost_INCLUDE_DIRS='/usr/include'
-- Boost_LIBRARIES='/usr/lib/libboost_program_options-mt.a;/usr/lib/libboost_filesystem-mt.a;/usr/lib/libboost_regex-mt.a;/usr/lib/libboost_system-mt.a'
-- CMAKE_CXX_COMPILER_VERSION='6.4.0'
-- CMAKE_CXX_FLAGS='-std=c++11 -Wall -Wextra -Wconversion -pedantic -DBOOST_FILESYSTEM_NO_DEPRECATED'
-- CMAKE_CXX_FLAGS_DEBUG='-g'
-- CMAKE_CXX_FLAGS_RELEASE='-O3 -DNDEBUG'
-- CMAKE_CXX_COMPILE_OBJECT='<CMAKE_CXX_COMPILER>  <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> -c <SOURCE>'
-- Unit tests disabled
-- CMAKE_INSTALL_PREFIX='/usr/local'
-- Configuring done
-- Generating done
-- Build files have been written to: /audiowaveform-master/build
/audiowaveform-master/build # make
Scanning dependencies of target doc
[  4%] Generating doc/audiowaveform.1.gz
[  8%] Generating doc/audiowaveform.5.gz
[  8%] Built target doc
Scanning dependencies of target audiowaveform
[ 13%] Building CXX object CMakeFiles/audiowaveform.dir/src/Main.cpp.o
[ 17%] Building CXX object CMakeFiles/audiowaveform.dir/src/AudioFileReader.cpp.o
[ 21%] Building CXX object CMakeFiles/audiowaveform.dir/src/AudioProcessor.cpp.o
[ 26%] Building CXX object CMakeFiles/audiowaveform.dir/src/BStdFile.cpp.o
[ 30%] Building CXX object CMakeFiles/audiowaveform.dir/src/DurationCalculator.cpp.o
[ 34%] Building CXX object CMakeFiles/audiowaveform.dir/src/Error.cpp.o
[ 39%] Building CXX object CMakeFiles/audiowaveform.dir/src/GdImageRenderer.cpp.o
[ 43%] Building CXX object CMakeFiles/audiowaveform.dir/src/MathUtil.cpp.o
[ 47%] Building CXX object CMakeFiles/audiowaveform.dir/src/Mp3AudioFileReader.cpp.o
[ 52%] Building CXX object CMakeFiles/audiowaveform.dir/src/Options.cpp.o
[ 56%] Building CXX object CMakeFiles/audiowaveform.dir/src/OptionHandler.cpp.o
[ 60%] Building CXX object CMakeFiles/audiowaveform.dir/src/Rgba.cpp.o
[ 65%] Building CXX object CMakeFiles/audiowaveform.dir/src/SndFileAudioFileReader.cpp.o
[ 69%] Building CXX object CMakeFiles/audiowaveform.dir/src/TimeUtil.cpp.o
[ 73%] Building CXX object CMakeFiles/audiowaveform.dir/src/WaveformBuffer.cpp.o
[ 78%] Building CXX object CMakeFiles/audiowaveform.dir/src/WaveformColors.cpp.o
[ 82%] Building CXX object CMakeFiles/audiowaveform.dir/src/WaveformGenerator.cpp.o
[ 86%] Building CXX object CMakeFiles/audiowaveform.dir/src/WaveformRescaler.cpp.o
[ 91%] Building CXX object CMakeFiles/audiowaveform.dir/src/WavFileWriter.cpp.o
[ 95%] Building C object CMakeFiles/audiowaveform.dir/src/madlld-1.1p1/bstdfile.c.o
[100%] Linking CXX executable audiowaveform
[100%] Built target audiowaveform
/audiowaveform-master/build # make install
[  8%] Built target doc
[100%] Built target audiowaveform
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/local/bin/audiowaveform
-- Installing: /usr/local/share/man/man1/audiowaveform.1.gz
-- Installing: /usr/local/share/man/man5/audiowaveform.5.gz
/audiowaveform-master/build # ./audiowaveform --version
AudioWaveform v1.2.2
  • And this is the output I get when moving the binary to a "clean" environment and try to execute it:
# audiowaveform --version
Error loading shared library libstdc++.so.6: No such file or directory (needed by /usr/local/bin/audiowaveform)
Error loading shared library libgcc_s.so.1: No such file or directory (needed by /usr/local/bin/audiowaveform)
Error relocating /usr/local/bin/audiowaveform: _ZNSo9_M_insertImEERSoT_: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt11logic_errorC1EPKc: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7reserveEm: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt5ctypeIcE13_M_widen_initEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt6localeeqERKS_: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE14_M_replace_auxEmmmc: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZdlPv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt16invalid_argumentD1Ev: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindEcm: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt8ios_baseD2Ev: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_end_catch: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSi4readEPcl: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_allocate_exception: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEcm: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt16invalid_argumentC1EPKc: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofEPKcmm: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt8ios_baseC2Ev: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt6localeC1Ev: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt16invalid_argumentD2Ev: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSo9_M_insertIdEERSoT_: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_guard_release: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSo5writeEPKcl: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcmm: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSi3getEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSo5flushEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZSt20__throw_out_of_rangePKc: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt11logic_errorC2ERKS_: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSo3putEc: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt13runtime_errorC2EPKc: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSo9_M_insertIlEERSoT_: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZSt9use_facetINSt7__cxx118messagesIcEEERKT_RKSt6locale: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZSt16__throw_bad_castv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofEPKcmm: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt8__detail15_List_node_base9_M_unhookEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSi10_M_extractIdEERSiRT_: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_replaceEmmPKwm: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt6locale7classicEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt8bad_castD2Ev: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSi10_M_extractIlEERSiRT_: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt13runtime_errorC1EPKc: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt13runtime_error4whatEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt6localeC1ERKS_: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt11logic_errorD2Ev: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt6localeC1EPKc: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcmm: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_createERmm: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_begin_catch: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt7codecvtIwc11__mbstate_tEC2Em: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_rethrow: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_throw: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt8ios_base4InitC1Ev: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt13runtime_errorC2ERKS_: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt9exceptionD2Ev: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev: symbol not found
Error relocating /usr/local/bin/audiowaveform: _Znwm: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt12__basic_fileIcED1Ev: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZSt9use_facetINSt7__cxx117collateIcEEERKT_RKSt6locale: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZSt24__throw_out_of_range_fmtPKcz: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_guard_abort: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt8__detail15_List_node_base7_M_hookEPS0_: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZdlPvm: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZSt9has_facetINSt7__cxx118messagesIcEEEbRKSt6locale: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEmc: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZSt24__throw_invalid_argumentPKc: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt7codecvtIwc11__mbstate_tED2Ev: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZSt20__throw_length_errorPKc: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEPKw: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSolsEs: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSolsEi: symbol not found
Error relocating /usr/local/bin/audiowaveform: _Unwind_Resume: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZSt9terminatev: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZSt17__throw_bad_allocv: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_call_unexpected: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt6localeaSERKS_: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt13runtime_errorD2Ev: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_free_exception: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZSt9use_facetINSt7__cxx118numpunctIcEEERKT_RKSt6locale: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_guard_acquire: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZSt19__throw_logic_errorPKc: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv120__si_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZSt4cerr: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZSt4cout: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv117__class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv117__class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv117__class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv117__class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv117__class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv117__class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv117__class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv117__class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv117__class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv117__class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv117__class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv117__class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv117__class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv117__class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv117__class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv117__class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv117__class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv117__class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: __cxa_pure_virtual: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTISt9exception: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTISt9exception: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVN10__cxxabiv121__vmi_class_type_infoE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTISt15basic_streambufIcSt11char_traitsIcEE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTISt15basic_streambufIcSt11char_traitsIcEE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTISt15basic_streambufIcSt11char_traitsIcEE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTISo: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTISo: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTISo: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPcl: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPcl: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPcl: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPcl: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKcl: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKcl: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKcl: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt11logic_error4whatEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt11logic_error4whatEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt11logic_error4whatEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt11logic_error4whatEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt11logic_error4whatEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt11logic_error4whatEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt11logic_error4whatEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt11logic_error4whatEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt11logic_error4whatEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt11logic_error4whatEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt11logic_error4whatEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt11logic_error4whatEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt11logic_error4whatEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt13runtime_error4whatEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt13runtime_error4whatEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt13runtime_error4whatEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt13runtime_error4whatEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt13runtime_error4whatEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt13runtime_error4whatEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt13runtime_error4whatEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNKSt13runtime_error4whatEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTISt8bad_cast: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTISt7codecvtIwc11__mbstate_tE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTISt16invalid_argument: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTISt16invalid_argument: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt8ios_base4InitD1Ev: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED1Ev: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt13runtime_errorD1Ev: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt6localeD1Ev: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZNSt11logic_errorD1Ev: symbol not found
Error relocating /usr/local/bin/audiowaveform: __gxx_personality_v0: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTINSt8ios_base7failureB5cxx11E: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTISt12out_of_range: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTTNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVSt9basic_iosIcSt11char_traitsIcEE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTTSt14basic_ofstreamIcSt11char_traitsIcEE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTIv: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTId: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTIb: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTISt11logic_error: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVSt15basic_streambufIcSt11char_traitsIcEE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTISt13runtime_error: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTTNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVSt14basic_ifstreamIcSt11char_traitsIcEE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVSt16invalid_argument: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVSt14basic_ofstreamIcSt11char_traitsIcEE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVSi: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTIi: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTTSt14basic_ifstreamIcSt11char_traitsIcEE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVSt13basic_filebufIcSt11char_traitsIcEE: symbol not found
Error relocating /usr/local/bin/audiowaveform: _ZTVNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE: symbol not found

carlbastos avatar Sep 16 '18 21:09 carlbastos

I've made alpine build to use in multistage builds https://hub.docker.com/r/genesix/docker-audiowaveform-alpine

webchi avatar Jun 18 '19 12:06 webchi

@webchi great result! Wonder if this will work un Ubuntu docker... I can see that the audiowaveform binary was dynamically linked:

audiowaveform: ELF 64-bit LSB pie executable x86-64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-, with debug_info, not stripped

so it is not portable...

loretoparisi avatar Sep 17 '19 09:09 loretoparisi

In order to get this fully working as a static build on Alpine I had to do the following.

First, modify CMakeLists.txt for the static build to statically link the Boost libs.

Include

set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_STATIC_RUNTIME OFF)

So the static config looks like the following

if(BUILD_STATIC)
    message(STATUS "Static build")

    if(WIN32)
        set(CMAKE_FIND_LIBRARY_SUFFIXES .lib)
    else()
        set(Boost_USE_STATIC_LIBS ON)
        set(Boost_USE_STATIC_RUNTIME OFF)
        set(CMAKE_FIND_LIBRARY_SUFFIXES .a)
        set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -no-pie")
    endif()
endif(BUILD_STATIC)

Then I used the following Dockerfile to build the executable

FROM alpine:3.11

RUN apk add --no-cache git make cmake gcc g++ libmad-dev zlib-dev zlib-static libpng-static libpng-dev libgd \
                       libid3tag-dev libsndfile-dev gd-dev boost-static boost-dev build-base autoconf automake gettext libtool \
    && cp /lib/libz* /usr/lib \
    && wget https://github.com/xiph/flac/archive/1.3.3.tar.gz \
    && tar xzf 1.3.3.tar.gz \
    && ls \
    && cd flac-1.3.3 \
    && ./autogen.sh \
    && ./configure --enable-shared=no \
    && make -j${nproc}\
    && make install \
    && cd ../ \
    && git clone https://github.com/william00179/audiowaveform.git \
    && cd audiowaveform \
    && wget https://github.com/google/googletest/archive/release-1.10.0.tar.gz \
    && tar xzf release-1.10.0.tar.gz \
    && ln -s googletest-release-1.10.0/googletest googletest \
    && ln -s googletest-release-1.10.0/googlemock googlemock \
    && mkdir build \
    && cd build \
    && cmake -D BUILD_STATIC=1 .. \
    && make -j${nproc}\
    && cp audiowaveform* /bin \
    && cd \
    && rm -rf /audiowaveform

then I could use this in my production image like via a multistage build

FROM healthsoft/audiowaveform-alpine:latest as audiowaveform-builder
FROM node:12.13.0-alpine

COPY --from=audiowaveform-builder /bin/audiowaveform /usr/local/bin

Using any of the build steps given above I had issues with Boost not being properly linked or static dependencies missing during the build process.

@chrisn it may be worth updating the README build deps for Alpine as the dev packages don't include static .a files, they are in their own packages.

Thanks

william00179 avatar Jan 23 '20 08:01 william00179

Stumbled upon the failing MP3 decoding test today as well, when I was optimising the statically compiled Docker image I maintain.

It happened both on alpine:latest and alpine:edge. Fortunately MP3 decoding seems to be working despite that.

Wonder how to resolve the test issues, and verify that it works at 100%. My test only included generating a PNG from an MP3 input file.

realies avatar Aug 30 '21 16:08 realies

None of the solutions above worked right away for me. Using https://github.com/gsix/docker-audiowaveform-alpine doesn't work because of library linking : Error loading shared library libboost_program_options-mt.so.1.67.0: No s[...].
Compiling the binaries directly inside my node-based Alpine image was failing for different reasons, amongst which missing libOpus library. It turns out you need to add opus and opus-dev in order to compile.
Here's a part of my Dockerfile if that may help anyone...

# Compile required Flac lib
RUN apk add --no-cache git make cmake gcc g++ libmad-dev \
  libid3tag-dev libsndfile-dev gd-dev boost-dev \
  libgd libpng-dev zlib-dev zlib-static libpng-static boost-static \
  libmad libsndfile libid3tag gd boost boost-program_options \ 
  autoconf automake libtool gettext opus opus-dev \
  && wget https://github.com/xiph/flac/archive/1.3.3.tar.gz \
  && tar xzf 1.3.3.tar.gz \
  && cd flac-1.3.3 \ 
  && ./autogen.sh \
  && ./configure --enable-shared=no \ 
  && make \ 
  && make install
# Compile audiowaveform 
RUN git clone https://github.com/bbcrd/audiowaveform.git \
  && cd audiowaveform \                
  && mkdir build \
  && cd build \
  && cmake -D BUILD_STATIC=1 -D ENABLE_TESTS=0 .. \
  && make \
  && cp audiowaveform* /bin \
  && cd \
  && rm -rf /audiowaveform

You may want to enable tests by removing -D ENABLE_TESTS=0 and by adding the required Google test libs, but that failed for me. The command is still working fine.

dark-matter-matters avatar Feb 17 '22 11:02 dark-matter-matters