compiling FLAC
William Labbett

Afraid it's me again. Trying to compile FLAC, I get this from the console window.

I know a bit about makefiles but not sure what the problem is here.

{"name":"603059","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/1\/5\/15800796831a90d1b4b04fce17019b72.png","w":754,"h":312,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/1\/5\/15800796831a90d1b4b04fce17019b72"}603059

Maybe there's an easier way to get FLAC installed other than compiling from source ?

StevenVI

This page may help you, if you're just looking for a program to compress/decompress .flac files: http://flac.sourceforge.net/download.html.

Trent Gamblin

I've seen that error before when using a non-mingw version of make... but you are typing mingw32-make so I assume you didn't just rename make.exe? The other thing I would check is that sh.exe is not in your path when you run mingw32-make.

Edgar Reynaldo
image said:

cd libFLAC ; mingw32-make -f makefile.lite release

The error is in the semicolon. Notice in the earlier lines how it uses a double ampersand to connect commands? Find that line in flac-1.2.1\src\makefile.lite (possibly under the release target) and change the semicolon to a double ampersand.

Note : It would have been easier to quote your log if you had pasted it into <pre></pre> tags. (Right click on the console title bar and select 'Edit->Select All', then right click on the console title bar again and select 'Edit->Copy'. Now you can paste the text into something else.)

William Labbett

Thanks a lot Edgar.

I fixed that little issue. I'd never have spotted it myself.

The error I'm getting now is :-

C:\flac-1.2.1\flac-1.2.1>mingw32-make -f Makefile.lite
(cd doc && mingw32-make -f Makefile.lite)
mingw32-make[1]: Entering directory `C:/flac-1.2.1/flac-1.2.1/doc'
mingw32-make[1]: `FLAC.tag' is up to date.
mingw32-make[1]: Leaving directory `C:/flac-1.2.1/flac-1.2.1/doc'
(cd src && mingw32-make -f Makefile.lite release)
mingw32-make[1]: Entering directory `C:/flac-1.2.1/flac-1.2.1/src'
(cd libFLAC && mingw32-make -f Makefile.lite release)
mingw32-make[2]: Entering directory `C:/flac-1.2.1/flac-1.2.1/src/libFLAC'
nasm -f elf -d OBJ_FORMAT_elf -i ia32/ ia32/bitreader_asm.nasm -o ia32/bitreader
_asm.release.o
process_begin: CreateProcess(NULL, nasm -f elf -d OBJ_FORMAT_elf -i ia32/ ia32/b
itreader_asm.nasm -o ia32/bitreader_asm.release.o, ...) failed.
make (e=2): The system cannot find the file specified.
mingw32-make[2]: *** [ia32/bitreader_asm.release.o] Error 2
mingw32-make[2]: Leaving directory `C:/flac-1.2.1/flac-1.2.1/src/libFLAC'
mingw32-make[1]: *** [libFLAC] Error 2
mingw32-make[1]: Leaving directory `C:/flac-1.2.1/flac-1.2.1/src'
mingw32-make: *** [src] Error 2

C:\flac-1.2.1\flac-1.2.1>

This line seems to cause the error.

nasm -f elf -d OBJ_FORMAT_elf -i ia32/ ia32/bitreader_asm.nasm -o ia32/bitreader
_asm.release.o

When it says cannot find the file specified which file does it mean ?

Arthur Kalliokoski

nasm -f elf -d OBJ_FORMAT_elf -i ia32/ ia32/bitreader_asm.nasm -o ia32/bitreader
_asm.release.o

Whenever I used nasm in windows I believe it was like

nasm -fwin32 myprog.asm -o myprog.o

William Labbett

cheers

When it says

nasm -f elf

doesn't that mean there should be a file elf in the working directory ?

Arthur Kalliokoski

Read the output of

nasm <enter>

then (as suggested)

nasm -h

then

nasm -hf

William Labbett

Thanks.

I did what you said and got this :/


C:\flac-1.2.1\flac-1.2.1>nasm
'nasm' is not recognized as an internal or external command,
operable program or batch file.


Looks like I don't even have nasm installed :'(

AMCerasoli

I'm also having problem with flac.

But I'm using msys.bat

I type:

Armando@Toshiba /c/flac
$ ./configure
checking for a BSD-compatible install... /bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking build system type... i686-pc-mingw32
checking host system type... i686-pc-mingw32
checking for style of include used by make... GNU
checking for gcc... gcc
checking for C compiler default output file name... a.exe
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... .exe
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking dependency style of gcc... gcc3
checking for a sed that does not truncate output... /bin/sed
checking for egrep... grep -E
checking for ld used by gcc... c:/mingw/mingw32/bin/ld.exe
checking if the linker (c:/mingw/mingw32/bin/ld.exe) is GNU ld... yes
checking for c:/mingw/mingw32/bin/ld.exe option to reload object files... -r
checking for BSD-compatible nm... /bin/nm -B
checking whether ln -s works... yes
checking how to recognise dependent libraries... file_magic file format pei*-i386(.*architecture: i386)?
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking dlfcn.h usability... no
checking dlfcn.h presence... no
checking for dlfcn.h... no
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking how to run the C++ preprocessor... g++ -E
checking for g77... no
checking for f77... no
checking for xlf... no
checking for frt... no
checking for pgf77... no
checking for fort77... no
checking for fl32... no
checking for af77... no
checking for f90... no
checking for xlf90... no
checking for pgf90... no
checking for epcf90... no
checking for f95... no
checking for fort... no
checking for xlf95... no
checking for ifc... no
checking for efc... no
checking for pgf95... no
checking for lf95... no
checking for gfortran... no
checking whether we are using the GNU Fortran 77 compiler... no
checking whether  accepts -g... no
checking the maximum length of command line arguments... 8192
checking command to parse /bin/nm -B output from gcc object... ok
checking for objdir... .libs
checking for ar... ar
checking for ranlib... ranlib
checking for strip... strip
checking if gcc static flag  works... yes
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -DDLL_EXPORT
checking if gcc PIC flag -DDLL_EXPORT works... yes
checking if gcc supports -c -o file.o... yes
checking whether the gcc linker (c:/mingw/mingw32/bin/ld.exe) supports shared libraries... yes
checking whether -lc should be explicitly linked in... yes
checking dynamic linker characteristics... Win32 ld.exe
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
configure: creating libtool
appending configuration tag "CXX" to libtool
checking for ld used by g++... c:/mingw/mingw32/bin/ld.exe
checking if the linker (c:/mingw/mingw32/bin/ld.exe) is GNU ld... yes
checking whether the g++ linker (c:/mingw/mingw32/bin/ld.exe) supports shared libraries... yes
checking for g++ option to produce PIC... -DDLL_EXPORT
checking if g++ PIC flag -DDLL_EXPORT works... yes
checking if g++ supports -c -o file.o... yes
checking whether the g++ linker (c:/mingw/mingw32/bin/ld.exe) supports shared libraries... yes
checking dynamic linker characteristics... Win32 ld.exe
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
appending configuration tag "F77" to libtool
checking whether we are using the GNU C++ compiler... (cached) yes
checking whether g++ accepts -g... (cached) yes
checking dependency style of g++... (cached) gcc3
checking whether make sets $(MAKE)... (cached) yes
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking for _LARGE_FILES value needed for large files... no
checking for _LARGEFILE_SOURCE value needed for large files... no
checking for fseeko... no
checking for void*... yes
checking size of void*... 4
checking whether byte ordering is bigendian... no
checking for socklen_t... no
checking for getopt_long... yes
checking for doxygen... no
checking for xmms-config... no
checking for XMMS - version >= 0.9.5.1... no
*** The xmms-config script installed by XMMS could not be found.
*** If XMMS was installed in PREFIX, make sure PREFIX/bin is in
*** your path, or set the XMMS_CONFIG environment variable to the
*** full path to xmms-config.
configure: WARNING: *** XMMS >= 0.9.5.1 not installed - XMMS support will not be built
checking for Ogg... yes
checking for ld used by GCC... c:/mingw/mingw32/bin/ld.exe
checking if the linker (c:/mingw/mingw32/bin/ld.exe) is GNU ld... yes
checking for shared library run path origin... done
checking for iconv... yes
checking how to link with libiconv... -liconv
checking for iconv declaration...
         extern size_t iconv (iconv_t cd, const char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
checking for nl_langinfo and CODESET... no
checking for docbook-to-man... no
checking for docbook2man... no
checking for nasm... no
checking for as... as
checking for gas... no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating src/libFLAC/Makefile
config.status: creating src/libFLAC/flac.pc
config.status: creating src/libFLAC/ia32/Makefile
config.status: creating src/libFLAC/ppc/Makefile
config.status: creating src/libFLAC/ppc/as/Makefile
config.status: creating src/libFLAC/ppc/gas/Makefile
config.status: creating src/libFLAC/include/Makefile
config.status: creating src/libFLAC/include/private/Makefile
config.status: creating src/libFLAC/include/protected/Makefile
config.status: creating src/libFLAC++/Makefile
config.status: creating src/libFLAC++/flac++.pc
config.status: creating src/flac/Makefile
config.status: creating src/metaflac/Makefile
config.status: creating src/monkeys_audio_utilities/Makefile
config.status: creating src/monkeys_audio_utilities/flac_mac/Makefile
config.status: creating src/monkeys_audio_utilities/flac_ren/Makefile
config.status: creating src/plugin_common/Makefile
config.status: creating src/plugin_winamp2/Makefile
config.status: creating src/plugin_winamp2/include/Makefile
config.status: creating src/plugin_winamp2/include/winamp2/Makefile
config.status: creating src/plugin_xmms/Makefile
config.status: creating src/share/Makefile
config.status: creating src/share/getopt/Makefile
config.status: creating src/share/grabbag/Makefile
config.status: creating src/share/replaygain_analysis/Makefile
config.status: creating src/share/replaygain_synthesis/Makefile
config.status: creating src/share/replaygain_synthesis/include/Makefile
config.status: creating src/share/replaygain_synthesis/include/private/Makefile
config.status: creating src/share/utf8/Makefile
config.status: creating src/test_grabbag/Makefile
config.status: creating src/test_grabbag/cuesheet/Makefile
config.status: creating src/test_grabbag/picture/Makefile
config.status: creating src/test_libs_common/Makefile
config.status: creating src/test_libFLAC/Makefile
config.status: creating src/test_libFLAC++/Makefile
config.status: creating src/test_seeking/Makefile
config.status: creating src/test_streams/Makefile
config.status: creating examples/Makefile
config.status: creating examples/c/Makefile
config.status: creating examples/c/decode/Makefile
config.status: creating examples/c/decode/file/Makefile
config.status: creating examples/c/encode/Makefile
config.status: creating examples/c/encode/file/Makefile
config.status: creating examples/cpp/Makefile
config.status: creating examples/cpp/decode/Makefile
config.status: creating examples/cpp/decode/file/Makefile
config.status: creating examples/cpp/encode/Makefile
config.status: creating examples/cpp/encode/file/Makefile
config.status: creating include/Makefile
config.status: creating include/FLAC/Makefile
config.status: creating include/FLAC++/Makefile
config.status: creating include/share/Makefile
config.status: creating include/share/grabbag/Makefile
config.status: creating include/test_libs_common/Makefile
config.status: creating doc/Makefile
config.status: creating doc/html/Makefile
config.status: creating doc/html/images/Makefile
config.status: creating doc/html/images/hw/Makefile
config.status: creating doc/html/ru/Makefile
config.status: creating m4/Makefile
config.status: creating man/Makefile
config.status: creating test/Makefile
config.status: creating test/cuesheets/Makefile
config.status: creating test/flac-to-flac-metadata-test-files/Makefile
config.status: creating test/metaflac-test-files/Makefile
config.status: creating test/pictures/Makefile
config.status: creating build/Makefile
config.status: creating obj/Makefile
config.status: creating obj/debug/Makefile
config.status: creating obj/debug/bin/Makefile
config.status: creating obj/debug/lib/Makefile
config.status: creating obj/release/Makefile
config.status: creating obj/release/bin/Makefile
config.status: creating obj/release/lib/Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands

Then...

I don't know how the make command works if my make program is called mingw32-make

Armando@Toshiba /c/flac
$ make
make  all-recursive
make[1]: Entering directory `/c/flac'
Making all in doc
make[2]: Entering directory `/c/flac/doc'
Making all in .
make[3]: Entering directory `/c/flac/doc'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/c/flac/doc'
Making all in html
make[3]: Entering directory `/c/flac/doc/html'
Making all in ru
make[4]: Entering directory `/c/flac/doc/html/ru'
make[4]: Nothing to be done for `all'.
make[4]: Leaving directory `/c/flac/doc/html/ru'
Making all in images
make[4]: Entering directory `/c/flac/doc/html/images'
Making all in hw
make[5]: Entering directory `/c/flac/doc/html/images/hw'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/c/flac/doc/html/images/hw'
make[5]: Entering directory `/c/flac/doc/html/images'
make[5]: Nothing to be done for `all-am'.
make[5]: Leaving directory `/c/flac/doc/html/images'
make[4]: Leaving directory `/c/flac/doc/html/images'
make[4]: Entering directory `/c/flac/doc/html'
make[4]: Nothing to be done for `all-am'.
make[4]: Leaving directory `/c/flac/doc/html'
make[3]: Leaving directory `/c/flac/doc/html'
make[2]: Leaving directory `/c/flac/doc'
Making all in include
make[2]: Entering directory `/c/flac/include'
Making all in FLAC
make[3]: Entering directory `/c/flac/include/FLAC'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/c/flac/include/FLAC'
Making all in FLAC++
make[3]: Entering directory `/c/flac/include/FLAC++'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/c/flac/include/FLAC++'
Making all in share
make[3]: Entering directory `/c/flac/include/share'
Making all in grabbag
make[4]: Entering directory `/c/flac/include/share/grabbag'
make[4]: Nothing to be done for `all'.
make[4]: Leaving directory `/c/flac/include/share/grabbag'
make[4]: Entering directory `/c/flac/include/share'
make[4]: Nothing to be done for `all-am'.
make[4]: Leaving directory `/c/flac/include/share'
make[3]: Leaving directory `/c/flac/include/share'
Making all in test_libs_common
make[3]: Entering directory `/c/flac/include/test_libs_common'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/c/flac/include/test_libs_common'
make[3]: Entering directory `/c/flac/include'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/c/flac/include'
make[2]: Leaving directory `/c/flac/include'
Making all in m4
make[2]: Entering directory `/c/flac/m4'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/c/flac/m4'
Making all in man
make[2]: Entering directory `/c/flac/man'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/c/flac/man'
Making all in src
make[2]: Entering directory `/c/flac/src'
Making all in libFLAC
make[3]: Entering directory `/c/flac/src/libFLAC'
Making all in include
make[4]: Entering directory `/c/flac/src/libFLAC/include'
Making all in private
make[5]: Entering directory `/c/flac/src/libFLAC/include/private'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/c/flac/src/libFLAC/include/private'
Making all in protected
make[5]: Entering directory `/c/flac/src/libFLAC/include/protected'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/c/flac/src/libFLAC/include/protected'
make[5]: Entering directory `/c/flac/src/libFLAC/include'
make[5]: Nothing to be done for `all-am'.
make[5]: Leaving directory `/c/flac/src/libFLAC/include'
make[4]: Leaving directory `/c/flac/src/libFLAC/include'
Making all in .
make[4]: Entering directory `/c/flac/src/libFLAC'
if /bin/sh ../../libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I../..   -DFLaC__INLINE=__inline__ -DNDEBUG -I../.. -I./include -I../../include     -O3 -funroll-loops -finline-functions -Wall -W -Winline -g -O2 -MT stream_decoder.lo -MD -MP -MF ".deps/stream_decoder.Tpo" \
          -c -o stream_decoder.lo `test -f 'stream_decoder.c' || echo './'`stream_decoder.c; \
        then mv -f ".deps/stream_decoder.Tpo" ".deps/stream_decoder.Plo"; \
        else rm -f ".deps/stream_decoder.Tpo"; exit 1; \
        fi
 gcc -DHAVE_CONFIG_H -I. -I. -I../.. -DFLaC__INLINE=__inline__ -DNDEBUG -I../..
-I./include -I../../include -O3 -funroll-loops -finline-functions -Wall -W -Winline -g -O2 -MT stream_decoder.lo -MD -MP -MF .deps/stream_decoder.Tpo -c stream_decoder.c  -DDLL_EXPORT -DPIC -o .libs/stream_decoder.o
In file included from stream_decoder.c:56:0:
../../include/share/alloc.h:41:5: error: #error
In file included from stream_decoder.c:56:0:
../../include/share/alloc.h: In function 'safe_malloc_mul_2op_':
../../include/share/alloc.h:120:13: error: 'SIZE_T_MAX' undeclared (first use in this function)
../../include/share/alloc.h:120:13: note: each undeclared identifier is reported only once for each function it appears in
../../include/share/alloc.h: In function 'safe_malloc_mul_3op_':
../../include/share/alloc.h:130:13: error: 'SIZE_T_MAX' undeclared (first use in this function)
../../include/share/alloc.h: In function 'safe_malloc_mul2add_':
../../include/share/alloc.h:143:13: error: 'SIZE_T_MAX' undeclared (first use in this function)
../../include/share/alloc.h: In function 'safe_realloc_mul_2op_':
../../include/share/alloc.h:196:13: error: 'SIZE_T_MAX' undeclared (first use in this function)
make[4]: *** [stream_decoder.lo] Error 1
make[4]: Leaving directory `/c/flac/src/libFLAC'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/c/flac/src/libFLAC'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/c/flac/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/c/flac'
make: *** [all] Error 2

William Labbett

No worries.

Find limits.h in your mingw32 (or whatever your equivalent is) include dir

and

add this line :-

#define SIZE_T_MAX UINT_MAX /* max value for a size_t */

to it (limits.h).

It's something to do with newer versions of gcc not having that #define or something.

After that you should get a bit further.

I ran into another problem - can't recall what it was now.

AMCerasoli

It didn't work William... :(

I modified this one...

{"name":"limits.gif","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/3\/e\/3e8f243da0abbe944aef2d207113e81b.gif","w":939,"h":181,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/3\/e\/3e8f243da0abbe944aef2d207113e81b"}limits.gif

{"name":"here.gif","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/4\/1\/41eca2ccf27e7b5153ea0629f501dc11.gif","w":1052,"h":874,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/4\/1\/41eca2ccf27e7b5153ea0629f501dc11"}here.gif

William Labbett

I can't see those pictures well.

Here's where I put it :

/* MSVC compatibility */
#define _I64_MIN LONG_LONG_MIN
#define _I64_MAX LONG_LONG_MAX
#define _UI64_MAX ULONG_LONG_MAX

EDIT : I think you put it here so it won't get included if the #ifndef isn't true.


#endif /* Not Strict ANSI and GNU C compiler */

#define SIZE_T_MAX UINT_MAX /* max value for a size_t */

#endif /* not _LIMITS_H_ */

AMCerasoli

Thanks I finally managed to install:

Zlib
Freetype
Lpng
Physfs
OpenAL
libOGG
libvorbis
Flac
dumb
libjpg

JESUS!!!!!!!!

With lot of errors... let's see if it works...

EDIT: No I was in the wrong limits.h file...

William Labbett

You got them all installed! Well done.

AMCerasoli

Awww...

I disable the SHARED option when configuring Allegro to see if I was able to compile the program with static libraries... But doesn't work...

While compile allegro with "SHARE disable" nothing works not even examples... But then I compile it with the SHARED option, and everything works , but again I have to link to the Dlls...

{"name":"shared.gif","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/6\/7\/6742d68fc08eeae8f9f971f9b929cd65.gif","w":1163,"h":846,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/6\/7\/6742d68fc08eeae8f9f971f9b929cd65"}shared.gif

I linked to the SHARED disable files but ask me for the dlls anyway.. what I'm doing wrong?

PS: I am testing the program in other computer that doesn't have anything to do with Allegro...

William Labbett

Sorry. Don't know.

Start a new thread about it.

Edgar Reynaldo

You download NASM yet? If yes, are you still getting errors?

William Labbett

Not getting errors from nasm but I'm getting a problem at the linking stage. I'm not sure if there's a linker option missing in the makefile or whether it's all there and there's some library I've not got in place. I think it might be libogg.

ia32/fixed_asm.nasm:308: warning: label alone on a line without a colon might be
 in error
nasm -f elf -d OBJ_FORMAT_elf -i ia32/ ia32/lpc_asm.nasm -o ia32/lpc_asm.release
.o
ia32/lpc_asm.nasm:1507: warning: label alone on a line without a colon might be
in error
nasm -f elf -d OBJ_FORMAT_elf -i ia32/ ia32/stream_encoder_asm.nasm -o ia32/stre
am_encoder_asm.release.o
ia32/stream_encoder_asm.nasm:155: warning: label alone on a line without a colon
 might be in error
ar cru ../../obj/release/lib/libFLAC.a bitmath.release.o bitreader.release.o bit
writer.release.o cpu.release.o crc.release.o fixed.release.o float.release.o for
mat.release.o lpc.release.o md5.release.o memory.release.o metadata_iterators.re
lease.o metadata_object.release.o ogg_decoder_aspect.release.o ogg_encoder_aspec
t.release.o ogg_helper.release.o ogg_mapping.release.o stream_decoder.release.o
stream_encoder.release.o stream_encoder_framing.release.o window.release.o   ia3
2/bitreader_asm.release.o ia32/cpu_asm.release.o ia32/fixed_asm.release.o ia32/l
pc_asm.release.o ia32/stream_encoder_asm.release.o  && ranlib ../../obj/release/
lib/libFLAC.a
gcc -shared -o ../../obj/release/lib/libFLAC.so bitmath.release.o bitreader.rele
ase.o bitwriter.release.o cpu.release.o crc.release.o fixed.release.o float.rele
ase.o format.release.o lpc.release.o md5.release.o memory.release.o metadata_ite
rators.release.o metadata_object.release.o ogg_decoder_aspect.release.o ogg_enco
der_aspect.release.o ogg_helper.release.o ogg_mapping.release.o stream_decoder.r
elease.o stream_encoder.release.o stream_encoder_framing.release.o window.releas
e.o   ia32/bitreader_asm.release.o ia32/cpu_asm.release.o ia32/fixed_asm.release
.o ia32/lpc_asm.release.o ia32/stream_encoder_asm.release.o  -L../../obj/release
/lib
Cannot export FLAC__bitreader_read_rice_signed_block_asm_ia32_bswap: symbol not
defined
Cannot export FLAC__cpu_have_cpuid_asm_ia32: symbol not defined
Cannot export FLAC__cpu_info_asm_ia32: symbol not defined
Cannot export FLAC__cpu_info_extended_amd_asm_ia32: symbol not defined
Cannot export FLAC__fixed_compute_best_predictor_asm_ia32_mmx_cmov: symbol not d
efined
Cannot export FLAC__lpc_compute_autocorrelation_asm_ia32: symbol not defined
Cannot export FLAC__lpc_compute_autocorrelation_asm_ia32_3dnow: symbol not defin
ed
Cannot export FLAC__lpc_compute_autocorrelation_asm_ia32_sse_lag_12: symbol not
defined
Cannot export FLAC__lpc_compute_autocorrelation_asm_ia32_sse_lag_4: symbol not d
efined
Cannot export FLAC__lpc_compute_autocorrelation_asm_ia32_sse_lag_8: symbol not d
efined
Cannot export FLAC__lpc_compute_residual_from_qlp_coefficients_asm_ia32: symbol
not defined
Cannot export FLAC__lpc_compute_residual_from_qlp_coefficients_asm_ia32_mmx: sym
bol not defined
Cannot export FLAC__lpc_restore_signal_asm_ia32: symbol not defined
Cannot export FLAC__lpc_restore_signal_asm_ia32_mmx: symbol not defined
Cannot export precompute_partition_info_sums_32bit_asm_ia32_: symbol not defined

bitreader.release.o:bitreader.c:(.text+0x148): undefined reference to `ntohl@4'
bitreader.release.o:bitreader.c:(.text+0x177): undefined reference to `ntohl@4'
bitreader.release.o:bitreader.c:(.text+0x190): undefined reference to `ntohl@4'
bitreader.release.o:bitreader.c:(.text+0x1a7): undefined reference to `ntohl@4'
bitreader.release.o:bitreader.c:(.text+0x1c2): undefined reference to `ntohl@4'
bitreader.release.o:bitreader.c:(.text+0x1d8): more undefined references to `nto
hl@4' follow
cpu.release.o:cpu.c:(.text+0x16): undefined reference to `FLAC__cpu_have_cpuid_a
sm_ia32'
cpu.release.o:cpu.c:(.text+0x88): undefined reference to `FLAC__cpu_info_asm_ia3
2'
cpu.release.o:cpu.c:(.text+0xe9): undefined reference to `FLAC__cpu_info_extende
d_amd_asm_ia32'
ogg_decoder_aspect.release.o:ogg_decoder_aspect.c:(.text+0x16): undefined refere
nce to `ogg_stream_init'
ogg_decoder_aspect.release.o:ogg_decoder_aspect.c:(.text+0x32): undefined refere
nce to `ogg_sync_init'
ogg_decoder_aspect.release.o:ogg_decoder_aspect.c:(.text+0x86): undefined refere
nce to `ogg_sync_clear'
ogg_decoder_aspect.release.o:ogg_decoder_aspect.c:(.text+0xcb): undefined refere
nce to `ogg_stream_reset'
ogg_decoder_aspect.release.o:ogg_decoder_aspect.c:(.text+0xd9): undefined refere
nce to `ogg_sync_reset'
ogg_decoder_aspect.release.o:ogg_decoder_aspect.c:(.text+0x107): undefined refer
ence to `ogg_stream_reset'
ogg_decoder_aspect.release.o:ogg_decoder_aspect.c:(.text+0x115): undefined refer
ence to `ogg_sync_reset'
ogg_decoder_aspect.release.o:ogg_decoder_aspect.c:(.text+0x204): undefined refer
ence to `ogg_sync_pageout'
ogg_decoder_aspect.release.o:ogg_decoder_aspect.c:(.text+0x22f): undefined refer
ence to `ogg_stream_pagein'
ogg_decoder_aspect.release.o:ogg_decoder_aspect.c:(.text+0x288): undefined refer
ence to `ogg_stream_packetout'
ogg_decoder_aspect.release.o:ogg_decoder_aspect.c:(.text+0x346): undefined refer
ence to `ogg_sync_buffer'
ogg_decoder_aspect.release.o:ogg_decoder_aspect.c:(.text+0x38f): undefined refer
ence to `ogg_sync_wrote'
ogg_decoder_aspect.release.o:ogg_decoder_aspect.c:(.text+0x3c0): undefined refer
ence to `ogg_page_serialno'
ogg_decoder_aspect.release.o:ogg_decoder_aspect.c:(.text+0x96): undefined refere
nce to `ogg_stream_clear'
ogg_encoder_aspect.release.o:ogg_encoder_aspect.c:(.text+0x15): undefined refere
nce to `ogg_stream_init'
ogg_encoder_aspect.release.o:ogg_encoder_aspect.c:(.text+0x201): undefined refer
ence to `ogg_stream_packetin'
ogg_encoder_aspect.release.o:ogg_encoder_aspect.c:(.text+0x244): undefined refer
ence to `ogg_stream_pageout'
ogg_encoder_aspect.release.o:ogg_encoder_aspect.c:(.text+0x2f8): undefined refer
ence to `ogg_stream_flush'
ogg_encoder_aspect.release.o:ogg_encoder_aspect.c:(.text+0x60): undefined refere
nce to `ogg_stream_clear'
ogg_helper.release.o:ogg_helper.c:(.text+0x351): undefined reference to `ogg_pag
e_checksum_set'
ogg_helper.release.o:ogg_helper.c:(.text+0x3d8): undefined reference to `ogg_pag
e_checksum_set'
stream_decoder.release.o:stream_decoder.c:(.text+0x4fee): undefined reference to
 `FLAC__bitreader_read_rice_signed_block_asm_ia32_bswap'
stream_decoder.release.o:stream_decoder.c:(.text+0x5003): undefined reference to
 `FLAC__lpc_restore_signal_asm_ia32'
stream_decoder.release.o:stream_decoder.c:(.text+0x500a): undefined reference to
 `FLAC__lpc_restore_signal_asm_ia32_mmx'
stream_decoder.release.o:stream_decoder.c:(.text+0x5011): undefined reference to
 `FLAC__lpc_restore_signal_asm_ia32_mmx'
stream_decoder.release.o:stream_decoder.c:(.text+0x513b): undefined reference to
 `FLAC__lpc_restore_signal_asm_ia32'
stream_decoder.release.o:stream_decoder.c:(.text+0x5142): undefined reference to
 `FLAC__lpc_restore_signal_asm_ia32'
stream_decoder.release.o:stream_decoder.c:(.text+0x5149): undefined reference to
 `FLAC__lpc_restore_signal_asm_ia32'
stream_encoder.release.o:stream_encoder.c:(.text+0xce5): undefined reference to
`precompute_partition_info_sums_32bit_asm_ia32_'
stream_encoder.release.o:stream_encoder.c:(.text+0x48d6): undefined reference to
 `FLAC__lpc_compute_autocorrelation_asm_ia32_sse_lag_4'
stream_encoder.release.o:stream_encoder.c:(.text+0x48ee): undefined reference to
 `FLAC__lpc_compute_residual_from_qlp_coefficients_asm_ia32'
stream_encoder.release.o:stream_encoder.c:(.text+0x48f8): undefined reference to
 `FLAC__lpc_compute_residual_from_qlp_coefficients_asm_ia32_mmx'
stream_encoder.release.o:stream_encoder.c:(.text+0x490f): undefined reference to
 `FLAC__fixed_compute_best_predictor_asm_ia32_mmx_cmov'
stream_encoder.release.o:stream_encoder.c:(.text+0x4da7): undefined reference to
 `FLAC__lpc_compute_residual_from_qlp_coefficients_asm_ia32'
stream_encoder.release.o:stream_encoder.c:(.text+0x4db1): undefined reference to
 `FLAC__lpc_compute_residual_from_qlp_coefficients_asm_ia32'
stream_encoder.release.o:stream_encoder.c:(.text+0x4dc9): undefined reference to
 `FLAC__lpc_compute_autocorrelation_asm_ia32_3dnow'
stream_encoder.release.o:stream_encoder.c:(.text+0x4e2f): undefined reference to
 `FLAC__lpc_compute_autocorrelation_asm_ia32'
stream_encoder.release.o:stream_encoder.c:(.text+0x4fe5): undefined reference to
 `FLAC__lpc_compute_autocorrelation_asm_ia32_sse_lag_8'
stream_encoder.release.o:stream_encoder.c:(.text+0x50dd): undefined reference to
 `FLAC__lpc_compute_autocorrelation_asm_ia32_sse_lag_12'
stream_encoder.release.o:stream_encoder.c:(.text+0x52bf): undefined reference to
 `FLAC__lpc_compute_autocorrelation_asm_ia32'
ia32/bitreader_asm.release.o: In function `FLAC__bitreader_read_rice_signed_bloc
k_asm_ia32_bswap.c1_loop':
ia32/bitreader_asm.nasm:(.text+0x80): undefined reference to `FLAC__crc16_table'

ia32/bitreader_asm.release.o: In function `FLAC__bitreader_read_rice_signed_bloc
k_asm_ia32_bswap.c1_next2':
ia32/bitreader_asm.nasm:(.text+0x10b): undefined reference to `FLAC__crc16_table
'
ia32/bitreader_asm.release.o: In function `FLAC__bitreader_read_rice_signed_bloc
k_asm_ia32_bswap.read1':
ia32/bitreader_asm.nasm:(.text+0x1a4): undefined reference to `bitreader_read_fr
om_client_'
ia32/bitreader_asm.release.o: In function `FLAC__bitreader_read_rice_signed_bloc
k_asm_ia32_bswap.read2':
ia32/bitreader_asm.nasm:(.text+0x1f1): undefined reference to `bitreader_read_fr
om_client_'
ia32/bitreader_asm.release.o: In function `FLAC__bitreader_read_rice_signed_bloc
k_asm_ia32_bswap.c2_next4':
ia32/bitreader_asm.nasm:(.text+0x25d): undefined reference to `FLAC__crc16_table
'
collect2: ld returned 1 exit status
mingw32-make[2]: *** [../../obj/release/lib/libFLAC.so] Error 1
mingw32-make[2]: Leaving directory `C:/flac/src/libFLAC'
mingw32-make[1]: *** [libFLAC] Error 2
mingw32-make[1]: Leaving directory `C:/flac/src'
mingw32-make: *** [src] Error 2

C:\flac>

Edgar Reynaldo

FLAC is way messed up. :o

I'd look for binaries if I was you.

AMCerasoli

Hey William, it gave me the same errors.

But are you using the MinGW Shell??

Because even when it give me those errors its seems that it's compiling.

If you use the Mingw Shell should be in the "local" folder

I type ./configure
make
make install

And in this directory (C:\MinGW\msys\1.0\local) appear the files that I attached, which then I copy to the Mingw directory and detects flac...

I don't know if this can help...

William Labbett

I did :) Thanks.

With MSYS it compiled with only one error which was easy to fix.

When I run CMake with the allegro CMakeLists file though, it says that dynamic loading of libFLAC will be disabled because a static library was found.

The example ex_acodec doesn't work. Perhaps it's because it needs the dll ?

AMCerasoli

I also have the same problem :'(

ex_acodec_multi, ex_audio_props, ex_audio_simple doens't work. the rest does..

and I get this from Cmake


Performing Test SUPPORT_GDIPLUS
Performing Test SUPPORT_GDIPLUS - Success
Found DSOUND: C:/MinGW/include 
Found OpenAL: C:/MinGW/lib/libOpenAL32.dll.a 
Found FLAC: C:/MinGW/include 
Performing Test FLAC_COMPILES
Performing Test FLAC_COMPILES - Success

WARNING: Dynamic loading will be disabled for FLAC as static library was found:

C:/MinGW/lib/libFLAC.a
Found DUMB: C:/MinGW/include 
Performing Test DUMB_COMPILES
Performing Test DUMB_COMPILES - Success

WARNING: Dynamic loading will be disabled for DUMB as static library was found:

C:/MinGW/lib/libdumb.a
Found VORBIS: C:/MinGW/include 
Performing Test VORBIS_COMPILES
Performing Test VORBIS_COMPILES - Success
DLL name for C:/MinGW/lib/libvorbisfile.dll.a: libvorbisfile-3.dll
Found Freetype: C:/MinGW/lib/libfreetype.dll.a 
Found ZLIB: C:/MinGW/include (found version "1.2.5")
Found PhysFS: C:/MinGW/lib/libphysfs.dll.a 
Found PHYSFS: C:/MinGW/lib/libphysfs.dll.a 
Performing Test PHYSFS_IMPLICIT_ZLIB
Performing Test PHYSFS_IMPLICIT_ZLIB - Success
Configuring done

William Labbett

I just tried something in case it works :

I changed libFLAC.a to libFLAC.dll.a (ie changed the name of the file) and CMake doesn't give that warning so maybe it'll be ok now. I'm recompiling and we'll see if it works.

EDIT : no, still get the same problems.

AMCerasoli

There is also liballegro-5.0.0-RC4-monolith-static-mt.a I found it in the Allegro Pre-compiled binaries...

Manual said:

The monolith version is a one-size-fits-all build of Allegro. When you link against allegro-monolith, you do not need to link to any other Allegro library. (And so there is no such thing as allegro_module-monolith.) The monolith build can also be static; if so, the same things mentioned above regarding the static build apply to it.

I'm trying to compile it statically I'm putting #define ALLEGRO_STATICLINK before all

#SelectExpand
1 #define ALLEGRO_STATICLINK 2#include "allegro5/allegro.h" 3#include "allegro5/allegro_font.h" 4#include "allegro5/allegro_ttf.h" 5#include "allegro5/allegro_image.h" 6#include <allegro5/allegro_primitives.h>

Assume you're using MinGW GCC 4.5.0. To compile Allegro as static library with static run-time libraries use following switches:

Switches for source files:
-s -DALLEGRO_SRC -DALLEGRO_STATICLINK -DALLEGRO_LIB_BUILD

Switches for linker:
-lgcc_eh -static-libgcc -static-libstdc++
Switches for executable:

Switches for source files:
-s -DALLEGRO_STATICLINK

Switches for linker:
-lgcc_eh -static-libgcc -static-libstdc++

Libraries:

Allegro and add-ons (list all your application, you may list all they will be ignored if not used):
allegro-5.1.0-static-mt
allegro_audio-5.1.0-static-mt
...

Direct dependencies (libraries used by Allegro):
libFLAC-1.2.1-static-mt
libvorbisfile-1.2.3-static-mt
libvorbis-1.2.3-static-mt
libogg-1.1.4-static-mt
dumb-0.9.3-static-mt
zlib-1.2.5-static-mt
physfs-2.0.0-static-mt
freetype-2.4.2-static-mt

Indirect dependencies (DLL's availabe in system):
gdiplus
uuid
kernel32
winmm
psapi
opengl32
glu32
user32
comdlg32
gdi32
shell32
ole32
advapi32
ws2_32

But I can't understand what he is saying... and you?

EDIT: There is also this recently created manual... but it's for Microsoft Visual Studio 2008... http://wiki.allegro.cc/index.php?title=Configuring_Microsoft_Visual_Studio_2008_For_Allegro_5.0.0
But talks about static linking....

But I still don't get it...

Matthew Leverton

Don't hijack other people's threads with your own questions.

Don't try to compile Allegro if you already have a binary.

I changed libFLAC.a to libFLAC.dll.a (ie changed the name of the file) and CMake doesn't give that warning so maybe it'll be ok now. I'm recompiling and we'll see if it works.

You shouldn't rename it. Anyway, I don't think that warning really matters. I believe it's telling you that Allegro will not enable dynamic linking for FLAC, which means it will be compiled directly into the module and not be an optional DLL.

But why are you even trying to compile Allegro? What's wrong with the binaries?

Compiling everything on Windows is a pain in the butt.

William Labbett

I guess I'm doing it because I want to learn a bit about compiling libraries, but I think from here on, I'll take your sensible suggestion.

AMCerasoli

I have the same reason that Willima have... I want to learn... and I already mange to compile Allegro on Windows. I thought that was some error there because the ex_acodec_multi, ex_audio_props, ex_audio_simple examples didn't work... But neither does with the Binaries...

Compiling on Windows isn't difficult, the problem is there is not enough information, and that is what I'm trying to do...

I already know how to create the Dynamic libraries, but to complete my manual I have to be able to Link statically Allegro...

I am almost there... The problem is that I can't understand where to put all those Switches for source files and Switches for linker... I don't know if Michał Cichoń did it on purpose, but wrote twice:

Switches for source files 
.....
Switches for linker:
.....
Switches for executable:

nothing was here.

Switches for source files:
.....
Switches for linker:
.....

The new manual from wiseguy is very cool... He talks about how to do the static linking but using Visual Studio 2008...

Michał Cichoń

There you go. Nice and fresh build of libFLAC. This is exactly same library which I use to build Allegro.
I do not know what compiler version are you using, so I included all variations in the archive.

Note about compiling foreign libraries:
In case of small libraries I'm preparing build files by myself to make sure everything was set right.

I hope this will help.

William Labbett

I thought that was some error there because the ex_acodec_multi, ex_audio_props, ex_audio_simple examples didn't work... But neither does with the Binaries...

I had a feeling that would be the case. What are we going to do ?

Michał Cichoń

I am almost there... The problem is that I can't understand where to put all those Switches for source files and Switches for linker... I don't know if Michał Cichoń did it on purpose, but wrote twice:

Switches for source files
.....
Switches for linker:
.....
Switches for executable:

nothing was here.

Switches for source files:
.....
Switches for linker:

First set of switches are for compiling library. Switches after "Switches for executable:" are for executables which you want to link the library.

AMCerasoli

I had a feeling that would be the case. What are we going to do ?

Well... So far I have learned how to use allegro with the binaries, compiling it, and what is left is learn how to do the static linking...

What are we going to do, is not so clear now... But what you want to do is to compile Allegro statically right?

Let me ask Cichón this... :)

First set of switches are for compiling library. Switches after "Switches for executable:" are for executables which you want to link the library.

First of all, I apologize for my extreme ignorance... But where do I have to put those switches?

What I could found was this, in CodeBlock.

{"name":"find.gif","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/0\/4\/040ff25555a87ef2be9d6cb6dde7acf3.gif","w":782,"h":963,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/0\/4\/040ff25555a87ef2be9d6cb6dde7acf3"}find.gif

I put it there, but I got this error...

||=== Trivium, Debug ===|
ld.exe||cannot find -libstdc++|
||=== Build finished: 1 errors, 0 warnings ===|

But... if I remove "-libstdc++" I get this...

{"name":"find3.gif","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/7\/b\/7b4e2d27516101597ffbc2c635021545.gif","w":987,"h":463,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/7\/b\/7b4e2d27516101597ffbc2c635021545"}find3.gif

I'm doing this...

#SelectExpand
1#define ALLEGRO_STATICLINK //WOOOOW 2#include "allegro5/allegro.h" 3#include "allegro5/allegro_font.h" 4#include "allegro5/allegro_ttf.h" 5#include "allegro5/allegro_image.h" 6#include <allegro5/allegro_primitives.h>

I also found this... But I don't know how to use it...

{"name":"find2.gif","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/1\/0\/101c74ad55d2e9230fa3c12a16e67443.gif","w":780,"h":407,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/1\/0\/101c74ad55d2e9230fa3c12a16e67443"}find2.gif

Michał Cichoń

'-static-libstdc++' is the parameter, you have split after '-static'.

Also link those libraries too:

gdiplus
uuid
kernel32
winmm
psapi
opengl32
glu32
user32
comdlg32
gdi32
shell32
ole32
advapi32
ws2_32

Please keep in mind. Order of libraries does have matter.

AMCerasoli

Do I have to link them manually???? They are almost all in the System32 Folder...

But I couldn't find "uuid.dll" I just could find uuid.h inside the include folder of MinGW....

I'm getting this... :'(

{"name":"find4.gif","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/3\/b\/3b69ff698f8df309aac1fa40b41e861e.gif","w":1414,"h":789,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/3\/b\/3b69ff698f8df309aac1fa40b41e861e"}find4.gif

I link all the libraries manually.... Like I did with the Allegro Static MT libraries... and fix the problem you told me ('-static-libstdc++' ) ::)

Thomas Fjellstrom

Do I have to link them manually????

You do if you link everything statically.

AMCerasoli

You do if you link everything statically.

Hmmm... Interesting I'm collecting quite good info with this ;D...

But I still getting that error...

C:\allegro\addons\image\gdiplus.cpp|444|multiple definition of `_al_shutdown_gdiplus'| 

??? ??? ??? What does that mean?

C:\MinGW\addons\image\CMakeFiles\allegro_image.dir\gdiplus.cpp.obj||In function `al_shutdown_gdiplus':|
C:\allegro\addons\image\gdiplus.cpp|444|multiple definition of `_al_shutdown_gdiplus'|
C:\allegro5\lib\liballegro_image-5.0.0-RC4-static-mt.a(gdiplus.o):gdiplus.cpp|| first defined here|
C:\MinGW\addons\image\CMakeFiles\allegro_image.dir\gdiplus.cpp.obj||In function `al_load_gdiplus_bitmap_f':|
C:\allegro\addons\image\gdiplus.cpp|220|multiple definition of `_al_load_gdiplus_bitmap_f'|
C:\allegro5\lib\liballegro_image-5.0.0-RC4-static-mt.a(gdiplus.o):gdiplus.cpp|| first defined here|
C:\MinGW\addons\image\CMakeFiles\allegro_image.dir\gdiplus.cpp.obj||In function `al_load_gdiplus_bitmap':|
C:\allegro\addons\image\gdiplus.cpp|300|multiple definition of `_al_load_gdiplus_bitmap'|
C:\allegro5\lib\liballegro_image-5.0.0-RC4-static-mt.a(gdiplus.o):gdiplus.cpp|| first defined here|
C:\MinGW\addons\image\CMakeFiles\allegro_image.dir\gdiplus.cpp.obj||In function `Z25_al_save_gdiplus_bitmap_fP12ALLEGRO_FILEPKcP14ALLEGRO_BITMAP':|
C:\allegro\addons\image\gdiplus.cpp|315|multiple definition of `_al_save_gdiplus_bitmap_f(ALLEGRO_FILE*, char const*, ALLEGRO_BITMAP*)'|
C:\allegro5\lib\liballegro_image-5.0.0-RC4-static-mt.a(gdiplus.o):gdiplus.cpp|| first defined here|
C:\MinGW\addons\image\CMakeFiles\allegro_image.dir\gdiplus.cpp.obj||In function `al_save_gdiplus_bitmap':|
C:\allegro\addons\image\gdiplus.cpp|392|multiple definition of `_al_save_gdiplus_bitmap'|
C:\allegro5\lib\liballegro_image-5.0.0-RC4-static-mt.a(gdiplus.o):gdiplus.cpp|| first defined here|
C:\MinGW\addons\image\CMakeFiles\allegro_image.dir\gdiplus.cpp.obj||In function `al_save_gdiplus_png_f':|
C:\allegro\addons\image\gdiplus.cpp|410|multiple definition of `_al_save_gdiplus_png_f'|
C:\allegro5\lib\liballegro_image-5.0.0-RC4-static-mt.a(gdiplus.o):gdiplus.cpp|| first defined here|
C:\MinGW\addons\image\CMakeFiles\allegro_image.dir\gdiplus.cpp.obj||In function `al_save_gdiplus_jpg_f':|
C:\allegro\addons\image\gdiplus.cpp|415|multiple definition of `_al_save_gdiplus_jpg_f'|
C:\allegro5\lib\liballegro_image-5.0.0-RC4-static-mt.a(gdiplus.o):gdiplus.cpp|| first defined here|
C:\MinGW\addons\image\CMakeFiles\allegro_image.dir\gdiplus.cpp.obj||In function `al_save_gdiplus_tif_f':|
C:\allegro\addons\image\gdiplus.cpp|420|multiple definition of `_al_save_gdiplus_tif_f'|
C:\allegro5\lib\liballegro_image-5.0.0-RC4-static-mt.a(gdiplus.o):gdiplus.cpp|| first defined here|
C:\MinGW\addons\image\CMakeFiles\allegro_image.dir\gdiplus.cpp.obj||In function `al_save_gdiplus_gif_f':|
C:\allegro\addons\image\gdiplus.cpp|425|multiple definition of `_al_save_gdiplus_gif_f'|
C:\allegro5\lib\liballegro_image-5.0.0-RC4-static-mt.a(gdiplus.o):gdiplus.cpp|| first defined here|
C:\MinGW\addons\image\CMakeFiles\allegro_image.dir\gdiplus.cpp.obj||In function `al_init_gdiplus':|
C:\allegro\addons\image\gdiplus.cpp|430|multiple definition of `_al_init_gdiplus'|
C:\allegro5\lib\liballegro_image-5.0.0-RC4-static-mt.a(gdiplus.o):gdiplus.cpp|| first defined here|
||Warning: resolving _GetModuleFileNameExA@16 by linking to _GetModuleFileNameExA|
||Warning: resolving _timeEndPeriod@4 by linking to _timeEndPeriod|
||Warning: resolving _timeBeginPeriod@4 by linking to _timeBeginPeriod|
||Warning: resolving _timeGetTime@0 by linking to _timeGetTime|
||Warning: resolving _SwapBuffers@4 by linking to _SwapBuffers|
||Warning: resolving _glFlush@0 by linking to _glFlush|
||Warning: resolving _wglMakeCurrent@8 by linking to _wglMakeCurrent|
||Warning: resolving _wglGetCurrentContext@0 by linking to _wglGetCurrentContext|
||Warning: resolving _glViewport@16 by linking to _glViewport|
||Warning: resolving _glMatrixMode@4 by linking to _glMatrixMode|
||Warning: resolving _glLoadIdentity@0 by linking to _glLoadIdentity|
||Warning: resolving _glOrtho@48 by linking to _glOrtho|
||Warning: resolving _wglDeleteContext@4 by linking to _wglDeleteContext|
||Warning: resolving _wglGetCurrentDC@0 by linking to _wglGetCurrentDC|
||Warning: resolving _ChoosePixelFormat@8 by linking to _ChoosePixelFormat|
||Warning: resolving _DescribePixelFormat@16 by linking to _DescribePixelFormat|
||Warning: resolving _SetPixelFormat@12 by linking to _SetPixelFormat|
||Warning: resolving _wglCreateContext@4 by linking to _wglCreateContext|
||Warning: resolving _glGetString@4 by linking to _glGetString|
||Warning: resolving _wglGetProcAddress@4 by linking to _wglGetProcAddress|
||Warning: resolving _CreateRectRgn@16 by linking to _CreateRectRgn|
||Warning: resolving _GetRegionData@12 by linking to _GetRegionData|
||Warning: resolving _DeleteObject@4 by linking to _DeleteObject|
||Warning: resolving _StretchDIBits@52 by linking to _StretchDIBits|
||Warning: resolving _CreateCompatibleDC@4 by linking to _CreateCompatibleDC|
||Warning: resolving _CreateBitmap@20 by linking to _CreateBitmap|
||Warning: resolving _CreateCompatibleBitmap@12 by linking to _CreateCompatibleBitmap|
||Warning: resolving _SelectObject@8 by linking to _SelectObject|
||Warning: resolving _SetPixel@16 by linking to _SetPixel|
||Warning: resolving _DeleteDC@4 by linking to _DeleteDC|
||Warning: resolving _glGetIntegerv@8 by linking to _glGetIntegerv|
||Warning: resolving _glEnable@4 by linking to _glEnable|
||Warning: resolving _glScissor@16 by linking to _glScissor|
||Warning: resolving _glDisable@4 by linking to _glDisable|
||Warning: resolving _glPushClientAttrib@4 by linking to _glPushClientAttrib|
||Warning: resolving _glPixelStorei@8 by linking to _glPixelStorei|
||Warning: resolving _glGetError@0 by linking to _glGetError|
||Warning: resolving _glBindTexture@8 by linking to _glBindTexture|
||Warning: resolving _glTexSubImage2D@36 by linking to _glTexSubImage2D|
||Warning: resolving _glPopClientAttrib@0 by linking to _glPopClientAttrib|
||Warning: resolving _glDrawPixels@20 by linking to _glDrawPixels|
||Warning: resolving _glPixelTransferi@8 by linking to _glPixelTransferi|
||Warning: resolving _glPushMatrix@0 by linking to _glPushMatrix|
||Warning: resolving _glRasterPos2f@8 by linking to _glRasterPos2f|
||Warning: resolving _glPopMatrix@0 by linking to _glPopMatrix|
||Warning: resolving _glGetTexImage@20 by linking to _glGetTexImage|
||Warning: resolving _glReadPixels@28 by linking to _glReadPixels|
||Warning: resolving _glDeleteTextures@8 by linking to _glDeleteTextures|
||Warning: resolving _glTexImage2D@36 by linking to _glTexImage2D|
||Warning: resolving _glTexParameteri@12 by linking to _glTexParameteri|
||Warning: resolving _glGenTextures@8 by linking to _glGenTextures|
||Warning: resolving _glCopyTexSubImage2D@32 by linking to _glCopyTexSubImage2D|
||Warning: resolving _glBlendFunc@8 by linking to _glBlendFunc|
||Warning: resolving _glTranslatef@12 by linking to _glTranslatef|
||Warning: resolving _glMultMatrixf@4 by linking to _glMultMatrixf|
||Warning: resolving _glLoadMatrixf@4 by linking to _glLoadMatrixf|
||Warning: resolving _glGetBooleanv@8 by linking to _glGetBooleanv|
||Warning: resolving _glEnableClientState@4 by linking to _glEnableClientState|
||Warning: resolving _glVertexPointer@16 by linking to _glVertexPointer|
||Warning: resolving _glTexCoordPointer@16 by linking to _glTexCoordPointer|
||Warning: resolving _glColorPointer@16 by linking to _glColorPointer|
||Warning: resolving _glDrawArrays@12 by linking to _glDrawArrays|
||Warning: resolving _glDisableClientState@4 by linking to _glDisableClientState|
||Warning: resolving _glClearColor@16 by linking to _glClearColor|
||Warning: resolving _glClear@4 by linking to _glClear|
||Warning: resolving _CoInitialize@4 by linking to _CoInitialize|
||Warning: resolving _CoUninitialize@0 by linking to _CoUninitialize|
||Warning: resolving _GdipFree@4 by linking to _GdipFree|
||Warning: resolving _GdipDeleteCustomLineCap@4 by linking to _GdipDeleteCustomLineCap|
||Warning: resolving _GdipDeleteCachedBitmap@4 by linking to _GdipDeleteCachedBitmap|
||Warning: resolving _GdipDeletePrivateFontCollection@4 by linking to _GdipDeletePrivateFontCollection|
||Warning: resolving _GdipCloneImage@8 by linking to _GdipCloneImage|
||Warning: resolving _GdipAlloc@4 by linking to _GdipAlloc|
||Warning: resolving _GdipDisposeImage@4 by linking to _GdipDisposeImage|
||Warning: resolving _GdiplusShutdown@4 by linking to _GdiplusShutdown|
||Warning: resolving _GdipGetImageEncodersSize@8 by linking to _GdipGetImageEncodersSize|
||Warning: resolving _GdipGetImageEncoders@12 by linking to _GdipGetImageEncoders|
||Warning: resolving _GdipCreateBitmapFromStream@8 by linking to _GdipCreateBitmapFromStream|
||Warning: resolving _GdipGetImageWidth@8 by linking to _GdipGetImageWidth|
||Warning: resolving _GdipGetImageHeight@8 by linking to _GdipGetImageHeight|
||Warning: resolving _GdipBitmapLockBits@20 by linking to _GdipBitmapLockBits|
||Warning: resolving _GdipBitmapUnlockBits@8 by linking to _GdipBitmapUnlockBits|
||Warning: resolving _GdipCreateBitmapFromScan0@24 by linking to _GdipCreateBitmapFromScan0|
||Warning: resolving _GdipSaveImageToStream@16 by linking to _GdipSaveImageToStream|
||Warning: resolving _GdiplusStartup@12 by linking to _GdiplusStartup|
||Warning: resolving _waveInStop@4 by linking to _waveInStop|
||Warning: resolving _waveInStart@4 by linking to _waveInStart|
||Warning: resolving _waveInReset@4 by linking to _waveInReset|
||Warning: resolving _waveInUnprepareHeader@12 by linking to _waveInUnprepareHeader|
||Warning: resolving _waveInClose@4 by linking to _waveInClose|
||Warning: resolving _waveInGetNumDevs@0 by linking to _waveInGetNumDevs|
||Warning: resolving _waveInGetDevCapsA@12 by linking to _waveInGetDevCapsA|
||Warning: resolving _waveInOpen@24 by linking to _waveInOpen|
||Warning: resolving _waveInPrepareHeader@12 by linking to _waveInPrepareHeader|
||Warning: resolving _waveInAddBuffer@12 by linking to _waveInAddBuffer|
C:\allegro5\lib\liballegro_image-5.0.0-RC4-static-mt.a(gdiplus.o):gdiplus.cpp:(.text$_ZN20AllegroWindowsStream14QueryInterfaceERK5_GUIDPPv+0x10)||undefined reference to `IID_IUnknown'|
C:\allegro5\lib\liballegro_image-5.0.0-RC4-static-mt.a(gdiplus.o):gdiplus.cpp:(.text$_ZN20AllegroWindowsStream14QueryInterfaceERK5_GUIDPPv+0x3d)||undefined reference to `IID_ISequentialStream'|
C:\allegro5\lib\liballegro_image-5.0.0-RC4-static-mt.a(gdiplus.o):gdiplus.cpp:(.text$_ZN20AllegroWindowsStream14QueryInterfaceERK5_GUIDPPv+0x4d)||undefined reference to `IID_IStream'|
C:\MinGW\CMakeFiles\OpenAL32.dir\Alc\winmm.obj||In function `WinMMOpenCapture':|
C:\openal\Alc\winmm.c|243|undefined reference to `alcSetError'|
C:\MinGW\CMakeFiles\OpenAL32.dir\Alc\winmm.obj||In function `CaptureThreadProc@4':|
C:\openal\Alc\winmm.c|136|undefined reference to `SuspendContext'|
C:\openal\Alc\winmm.c|175|undefined reference to `ProcessContext'|
C:\MinGW\CMakeFiles\OpenAL32.dir\Alc\winmm.obj||In function `alcWinMMProbe':|
C:\openal\Alc\winmm.c|493|undefined reference to `AppendCaptureDeviceList'|
C:\MinGW\CMakeFiles\OpenAL32.dir\Alc\winmm.obj||In function `WinMMCaptureSamples':|
C:\openal\Alc\winmm.c|414|undefined reference to `alcSetError'|
||=== Build finished: 28 errors, 95 warnings ===|

Michał Cichoń

liballegro_image-5.0.0-RC4-static-mt.a is a library from pre-build binaries. Remove it from linking. Why? Because you build you own version, right? You will probably have to do same thing with rest of 5.0.0-RC4 libs.

AMCerasoli

Yes but I'm using the pre-build binaries to stay away from errors... My plan is to learn how to statically link Allegro with the pre-build one and then try with my own static libraries....

Since actually I am not completely sure if my compilation of allegro works 100%, I'm using the pre-build ones that I know that works 100%...

I used the binaries of my compilation and works fine... But to stay away from errors I'm doing that... There is no problem right?

William Labbett

But what you want to do is to compile Allegro statically right?

What I think I want is to have a set of examples that work as intended by any means possible.

With the statically linked version, can't you just set an option in CMake ?

Michał Cichoń

You cannot link your executable both with your version and pre-build binaries at once. Use one version at the time and switch between.

Thomas Fjellstrom

Indeed, why would you not expect to get a multiple definition error if you link to the same libs twice?

AMCerasoli

What I think I want is to have a set of examples that work as intended by any means possible.

Well, all my examples works except those of audio... even the demo works (with audio)...

I don't know what is happening with those examples... maybe it's a problem of those examples I don't know...

But the rest of examples works right???

You cannot link your executable both with your version and pre-build binaries at once. Use one version at the time and switch between.

I'm doing that???? I didn't know....

Lets see, I'm going to reinstall everything... I'm going to use just the Pre-build binaries at first time...

Thomas Fjellstrom

I'm doing that???? I didn't know....

The monolith lib contains ALL of the allegro addon libs, and many of its dependencies, all balled up into one single library. If you also link to other allegro addon libs, you'll get duplication errors, since you're linking to some of the same code more than once.

AMCerasoli

I DID IT!!!! I DID IT!!! I STATICALLY LINK ALLEGRO ON WINDOWS!!!

YHEAAAAAAAA!!!!

WOOOOW FINALLY.. About two days on this...

Anyway, since I couldn't find the uuid.dll in my PC (Windows Vista) , I searched for it on my Windows XP machine, and found a "libuuid.a" file inside "C:\Program Files\CodeBlocks\MinGW\lib". Which I link to... AND WORKS!!!!! YHEA!!!!!

I don't remember why I did install CodeBlock with Mingw if I always use the Mingw installer, but anyway was.... "The destiny" ;D ;D

But why couldn't find the uuid.dll file on windows vista???? Isn't a system file???

Thread #606040. Printed from Allegro.cc