Compiling libshout using QT/qmake - windows

I'm trying to link my QT application to a DLL (libshout), while building for Windows.
I've added the appropriate lines to my .pro file:
LIBS += -L/local/lib -lmp3lame
LIBS += -L/local/lib -lshout
LIBS += -L/local/lib -logg
LIBS += -L/local/lib -lvorbis
LIBS += -lwsock32
I've also successfully built and installed libshout to /local/lib (I'm using mingw and the gcc-dw2 compiler).
However, qmake fails to link successfully. I've pasted the gcc/make output below. I'm not even sure it's trying to link to the right library (isn't .a/.la a static library?).
I've been tearing my hair out for 3 days over this one so any help appreciated :)
g++-dw2 -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPP
ORT -DQT_DLL -DQT_NO_DEBUG -DQT_WEBKIT_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CO
RE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I'../../Qt/4.6.3/include/QtCore' -I
'../../Qt/4.6.3/include/QtNetwork' -I'../../Qt/4.6.3/include/QtGui' -I'../../Qt/
4.6.3/include/QtWebKit' -I'../../Qt/4.6.3/include' -I'../../Qt/4.6.3/include/Act
iveQt' -I'release' -I'../../Qt/4.6.3/mkspecs/win32-g++' -o release/qrc_resources
.o release/qrc_resources.cpp
g++-dw2 -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo
-reloc -Wl,-s -mthreads -Wl -Wl,-subsystem,windows -o build/release/MyApp.exe ob
ject_script.MyApp.Release -L'c:/Qt/4.6.3/lib' -lmingw32 -lqtmain -L/local/lib -
lmp3lame -L/local/lib -lshout -lwsock32 -lQtWebKit4 -lQtGui4 -lQtNetwork4 -lQtCo
re4
C:/msys/1.0/local/lib/libshout.a(ogg.o): In function `free_codec':
c:\myapp_app\external\libshout-2.2.2\src/ogg.c:188: undefined reference to `ogg_
stream_clear'
C:/msys/1.0/local/lib/libshout.a(ogg.o): In function `close_ogg':
c:\myapp_app\external\libshout-2.2.2\src/ogg.c:144: undefined reference to `ogg_
sync_clear'
C:/msys/1.0/local/lib/libshout.a(ogg.o): In function `send_ogg':
c:\myapp_app\external\libshout-2.2.2\src/ogg.c:90: undefined reference to `ogg_s
ync_buffer'
c:\myapp_app\external\libshout-2.2.2\src/ogg.c:92: undefined reference to `ogg_s
ync_wrote'
c:\myapp_app\external\libshout-2.2.2\src/ogg.c:94: undefined reference to `ogg_s
ync_pageout'
c:\myapp_app\external\libshout-2.2.2\src/ogg.c:95: undefined reference to `ogg_p
age_bos'
C:/msys/1.0/local/lib/libshout.a(ogg.o): In function `open_codec':
c:\myapp_app\external\libshout-2.2.2\src/ogg.c:154: undefined reference to `ogg_
page_serialno'
c:\myapp_app\external\libshout-2.2.2\src/ogg.c:154: undefined reference to `ogg_
stream_init'
c:\myapp_app\external\libshout-2.2.2\src/ogg.c:155: undefined reference to `ogg_
stream_pagein'
c:\myapp_app\external\libshout-2.2.2\src/ogg.c:160: undefined reference to `ogg_
stream_clear'
C:/msys/1.0/local/lib/libshout.a(ogg.o): In function `send_ogg':
c:\myapp_app\external\libshout-2.2.2\src/ogg.c:117: undefined reference to `ogg_
page_serialno'
c:\myapp_app\external\libshout-2.2.2\src/ogg.c:119: undefined reference to `ogg_
stream_pagein'
c:\myapp_app\external\libshout-2.2.2\src/ogg.c:94: undefined reference to `ogg_s
ync_pageout'
C:/msys/1.0/local/lib/libshout.a(ogg.o): In function `shout_open_ogg':
c:\myapp_app\external\libshout-2.2.2\src/ogg.c:74: undefined reference to `ogg_s
ync_init'
C:/msys/1.0/local/lib/libshout.a(vorbis.o): In function `free_vorbis_data':
c:\myapp_app\external\libshout-2.2.2\src/vorbis.c:103: undefined reference to `v
orbis_info_clear'
c:\myapp_app\external\libshout-2.2.2\src/vorbis.c:104: undefined reference to `v
orbis_comment_clear'
C:/msys/1.0/local/lib/libshout.a(vorbis.o): In function `read_vorbis_page':
c:\myapp_app\external\libshout-2.2.2\src/vorbis.c:83: undefined reference to `vo
rbis_synthesis_headerin'
c:\myapp_app\external\libshout-2.2.2\src/vorbis.c:82: undefined reference to `og
g_stream_packetout'
c:\myapp_app\external\libshout-2.2.2\src/vorbis.c:91: undefined reference to `og
g_stream_packetout'
C:/msys/1.0/local/lib/libshout.a(vorbis.o): In function `vorbis_blocksize':
c:\myapp_app\external\libshout-2.2.2\src/vorbis.c:110: undefined reference to `v
orbis_packet_blocksize'
C:/msys/1.0/local/lib/libshout.a(vorbis.o): In function `shout_open_vorbis':
c:\myapp_app\external\libshout-2.2.2\src/vorbis.c:57: undefined reference to `vo
rbis_info_init'
c:\myapp_app\external\libshout-2.2.2\src/vorbis.c:58: undefined reference to `vo
rbis_comment_init'
c:\myapp_app\external\libshout-2.2.2\src/vorbis.c:60: undefined reference to `og
g_stream_packetout'
c:\myapp_app\external\libshout-2.2.2\src/vorbis.c:62: undefined reference to `vo
rbis_synthesis_headerin'
collect2: ld returned 1 exit status
make[1]: *** [build/release/Myapp.exe] Error 1
make[1]: Leaving directory `/c/myapp_app/src'
make: *** [release] Error 2

My first guess would be that libogg and libvorbis aren't installed in /local/lib, did you check that they are there?

Related

/usr/bin/ld: cannot find -lnetcdf?

First of all, this is my first question on here. If I make mistake, I'm sorry about that. By the way I'm a newbie in Fortran. I want to compile the "MMIF" model and the model has a compiler "makefile". I edited my "makefile" but I have an error message. When I used the make command, I'm getting this error:
...
/usr/bin/ld: cannot find -lnetcdf
collect2: error: ld returned 1 exit status
makefile:62: recipe for target 'mmif' failed
make: *** [mmif] Error 1
When I checked the location, I realised libnetcdf.a is missing. I don't know if it is needed in order to run the "makefile". Can you help me with this situation?
...
/usr/lib/x86_64-linux-gnu/libnetcdff.a
/usr/lib/x86_64-linux-gnu/libnetcdff.so
/usr/lib/x86_64-linux-gnu/libnetcdff.so.6
/usr/lib/x86_64-linux-gnu/libnetcdff.so.6.1.1
/usr/lib/x86_64-linux-gnu/libnetcdf.settings
/usr/lib/x86_64-linux-gnu/libnetcdf.so
/usr/lib/x86_64-linux-gnu/libnetcdf.so.13
...
Update 1
Thanks for helping and guiding me. I changed -lnetcdf to -lnetcdff. It works but I have a another problem now. I'm getting so many "undefined reference to..". Now, I'm trying to resolve these problems.
Error Code
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_attio.o): In function `nf_put_att_text_':
(.text+0xb3): undefined reference to `nc_put_att_text'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_attio.o): In function `nf_put_att_text_a_':
(.text+0x193): undefined reference to `nc_put_att_text'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_attio.o): In function `nf_put_att_int1_':
(.text+0x277): undefined reference to `nc_put_att_schar'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_attio.o): In function `nf_put_att_int2_':
(.text+0x357): undefined reference to `nc_put_att_short'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_attio.o): In function `nf_put_att_int_':
(.text+0x437): undefined reference to `nc_put_att_int'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_attio.o): In function `nf_put_att_real_':
(.text+0x517): undefined reference to `nc_put_att_float'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_attio.o): In function `nf_put_att_double_':
(.text+0x5f7): undefined reference to `nc_put_att_double'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_attio.o): In function `nf_get_att_text_':
(.text+0x745): undefined reference to `nc_get_att_text'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_attio.o): In function `nf_get_att_text_a_':
(.text+0x846): undefined reference to `nc_get_att_text'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_attio.o): In function `nf_get_att_int1_':
(.text+0x916): undefined reference to `nc_get_att_schar'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_attio.o): In function `nf_get_att_int2_':
(.text+0x9e6): undefined reference to `nc_get_att_short'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_attio.o): In function `nf_get_att_int_':
(.text+0xab6): undefined reference to `nc_get_att_int'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_attio.o): In function `nf_get_att_real_':
(.text+0xb86): undefined reference to `nc_get_att_float'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_attio.o): In function `nf_get_att_double_':
(.text+0xc56): undefined reference to `nc_get_att_double'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_control.o): In function `nf_create_':
(.text+0xa1): undefined reference to `nc_create'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_control.o): In function `nf__create_':
(.text+0x19a): undefined reference to `nc__create'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_control.o): In function `nf__create_mp_':
(.text+0x292): undefined reference to `nc__create_mp'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_control.o): In function `nf_open_':
(.text+0x371): undefined reference to `nc_open'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_control.o): In function `nf__open_':
(.text+0x45d): undefined reference to `nc__open'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_control.o): In function `nf__open_mp_':
(.text+0x557): undefined reference to `nc__open_mp'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_control.o): In function `nf_open_mem_':
(.text+0x63c): undefined reference to `nc_open_mem'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_control.o): In function `nf_inq_path_':
(.text+0x78d): undefined reference to `nc_inq_path'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_control.o): In function `nf_set_fill_':
(.text+0x8ba): undefined reference to `nc_set_fill'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_control.o): In function `nf_set_default_format_':
(.text+0x910): undefined reference to `nc_set_default_format'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_control.o): In function `nf_delete_':
(.text+0xa3a): undefined reference to `nc_delete'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_control.o): In function `nf_delete_mp_':
(.text+0xb02): undefined reference to `nc_delete_mp'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_control.o): In function `nf_inq_base_pe_':
(.text+0xb60): undefined reference to `nc_inq_base_pe'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_control.o): In function `nf_redef_':
(.text+0x943): undefined reference to `nc_redef'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_control.o): In function `nf_enddef_':
(.text+0x953): undefined reference to `nc_enddef'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_control.o): In function `nf__enddef_':
(.text+0x96f): undefined reference to `nc__enddef'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_control.o): In function `nf_sync_':
(.text+0x983): undefined reference to `nc_sync'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_control.o): In function `nf_abort_':
(.text+0x993): undefined reference to `nc_abort'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_control.o): In function `nf_close_':
(.text+0x9a3): undefined reference to `nc_close'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_control.o): In function `nf_set_base_pe_':
(.text+0xb35): undefined reference to `nc_set_base_pe'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_dim.o): In function `nf_def_dim_':
(.text+0xb7): undefined reference to `nc_def_dim'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_dim.o): In function `nf_inq_dim_':
(.text+0x24c): undefined reference to `nc_inq_dim'
(.text+0x2a6): undefined reference to `nc_inq_dim'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_dim.o): In function `nf_inq_dimid_':
(.text+0x45d): undefined reference to `nc_inq_dimid'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_dim.o): In function `nf_inq_dimlen_':
(.text+0x4c9): undefined reference to `nc_inq_dimlen'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_dim.o): In function `nf_inq_dimname_':
(.text+0x63f): undefined reference to `nc_inq_dimname'
(.text+0x691): undefined reference to `nc_inq_dimname'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_dim.o): In function `nf_rename_dim_':
(.text+0x82e): undefined reference to `nc_rename_dim'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_genvar.o): In function `nf_def_var_':
(.text+0x111): undefined reference to `nc_def_var'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_genvar.o): In function `nf_inq_varndims_':
(.text+0x1a5): undefined reference to `nc_inq_varndims'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_genvar.o): In function `nf_inq_var_':
(.text+0x2f8): undefined reference to `nc_inq_varndims'
(.text+0x363): undefined reference to `nc_inq_var'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_genvar.o): In function `nf_inq_vardimid_':
(.text+0x550): undefined reference to `nc_inq_varndims'
(.text+0x59a): undefined reference to `nc_inq_vardimid'
(.text+0x611): undefined reference to `nc_inq_vardimid'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_genvar.o): In function `nf_inq_varid_':
(.text+0x6cf): undefined reference to `nc_inq_varid'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_genvar.o): In function `nf_inq_varname_':
(.text+0x7e9): undefined reference to `nc_inq_varname'
(.text+0x831): undefined reference to `nc_inq_varname'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_genvar.o): In function `nf_inq_vartype_':
(.text+0x955): undefined reference to `nc_inq_vartype'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_genvar.o): In function `nf_inq_varnatts_':
(.text+0x9a5): undefined reference to `nc_inq_varnatts'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_genvar.o): In function `nf_rename_var_':
(.text+0xa6e): undefined reference to `nc_rename_var'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_genvar.o): In function `nf_copy_var_':
(.text+0xaaa): undefined reference to `nc_copy_var'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_put_vara_text_':
(.text+0x3d): undefined reference to `nc_inq_varndims'
(.text+0x139): undefined reference to `nc_put_vara_text'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_put_vara_text_a_':
(.text+0x1cd): undefined reference to `nc_inq_varndims'
(.text+0x2c9): undefined reference to `nc_put_vara_text'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_put_vara_int1_':
(.text+0x35d): undefined reference to `nc_inq_varndims'
(.text+0x459): undefined reference to `nc_put_vara_schar'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_put_vara_int2_':
(.text+0x4ed): undefined reference to `nc_inq_varndims'
(.text+0x5e9): undefined reference to `nc_put_vara_short'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_put_vara_int_':
(.text+0x67d): undefined reference to `nc_inq_varndims'
(.text+0x779): undefined reference to `nc_put_vara_int'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_put_vara_real_':
(.text+0x80d): undefined reference to `nc_inq_varndims'
(.text+0x909): undefined reference to `nc_put_vara_float'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_put_vara_double_':
(.text+0x99d): undefined reference to `nc_inq_varndims'
(.text+0xa99): undefined reference to `nc_put_vara_double'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_put_vara_':
(.text+0xb2d): undefined reference to `nc_inq_varndims'
(.text+0xc29): undefined reference to `nc_put_vara'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_get_vara_text_':
(.text+0xd31): undefined reference to `nc_inq_varndims'
(.text+0xe3a): undefined reference to `nc_get_vara_text'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_get_vara_text_a_':
(.text+0xefd): undefined reference to `nc_inq_varndims'
(.text+0xff9): undefined reference to `nc_get_vara_text'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_get_vara_int1_':
(.text+0x108d): undefined reference to `nc_inq_varndims'
(.text+0x1189): undefined reference to `nc_get_vara_schar'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_get_vara_int2_':
(.text+0x121d): undefined reference to `nc_inq_varndims'
(.text+0x1319): undefined reference to `nc_get_vara_short'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_get_vara_int_':
(.text+0x13ad): undefined reference to `nc_inq_varndims'
(.text+0x14a9): undefined reference to `nc_get_vara_int'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_get_vara_real_':
(.text+0x153d): undefined reference to `nc_inq_varndims'
(.text+0x1639): undefined reference to `nc_get_vara_float'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_get_vara_double_':
(.text+0x16cd): undefined reference to `nc_inq_varndims'
(.text+0x17c9): undefined reference to `nc_get_vara_double'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_get_vara_':
(.text+0x185d): undefined reference to `nc_inq_varndims'
(.text+0x1959): undefined reference to `nc_get_vara'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_put_vara_text_':
(.text+0x7e): undefined reference to `nc_put_vara_text'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_put_vara_text_a_':
(.text+0x20e): undefined reference to `nc_put_vara_text'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_put_vara_int1_':
(.text+0x39e): undefined reference to `nc_put_vara_schar'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_put_vara_int2_':
(.text+0x52e): undefined reference to `nc_put_vara_short'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_put_vara_int_':
(.text+0x6be): undefined reference to `nc_put_vara_int'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_put_vara_real_':
(.text+0x84e): undefined reference to `nc_put_vara_float'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_put_vara_double_':
(.text+0x9de): undefined reference to `nc_put_vara_double'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_put_vara_':
(.text+0xb6e): undefined reference to `nc_put_vara'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_get_vara_text_':
(.text+0xd72): undefined reference to `nc_get_vara_text'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_get_vara_text_a_':
(.text+0xf3e): undefined reference to `nc_get_vara_text'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_get_vara_int1_':
(.text+0x10ce): undefined reference to `nc_get_vara_schar'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_get_vara_int2_':
(.text+0x125e): undefined reference to `nc_get_vara_short'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_get_vara_int_':
(.text+0x13ee): undefined reference to `nc_get_vara_int'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_get_vara_real_':
(.text+0x157e): undefined reference to `nc_get_vara_float'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_get_vara_double_':
(.text+0x170e): undefined reference to `nc_get_vara_double'
/usr/lib/x86_64-linux-gnu/libnetcdff.a(nf_varaio.o): In function `nf_get_vara_':
(.text+0x189e): undefined reference to `nc_get_vara'
collect2: error: ld returned 1 exit status
makefile:62: recipe for target 'mmif' failed
make: *** [mmif] Error 1
makefile
#
# Makefile for MMIF VERSION 3.4.1 2019-03-11
#
# Edit this file to un-comment the section for your compiler.
# You will also need to edit the line that specifies where to find the
# NetCDF libraries, which must be compiled by the same compiler.
# The directory "netcdf.4.1.1-mingw" is used to commpile under MS Windows.
# It was compiled using MinGW version 20110802, see http://www.mingw.org,
# and the script compile_netcdf_mingw.sh.
#
# PGI started linking with the OpenMP library by default in their 11.0 release,
# so that users would be able to use CPU binding even with serial code.
# Adding "-mp=nonuma -nomp" to FFLAGS fixes "can't find libnuma.so" problems.
# PGI Fortran:
# FC = pgf90
# FFLAGS = -g -fast -Mlfs # -Mlfs is default on for x86_64
# FFLAGS += -Mbounds # for bounds checking/debugging
# FFLAGS += -Bstatic_pgi # to use static PGI libraries
# FFLAGS += -Bstatic # to use static netCDF libraries
# FFLAGS += -mp=nonuma -nomp # fix for "can't find libnuma.so"
# NETCDF = /usr/local/src/netcdf-4.1.1.pgi
# GNU gfortran (Windows or Linux, just set NETCDF below correctly)
FC = gfortran
FFLAGS = -g -Wall
FFLAGS += -fbounds-check # for bounds checking/debugging
FFLAGS += -static # to use static libraries
NETCDF = /usr
# Intel Fortran:
#FC = ifort
#FFLAGS = -O2 -align dcommons -ipo
#FFLAGS += -static # to use static libraries
#NETCDF = /path/to/netcdf-4.1.1.ifort
# NETCDF values that are the same for all compilers
INCL = -I$(NETCDF)/include
LIBS = -L/usr/lib/x86_64-linux-gnu -lnetcdff
PROGRAM = mmif
TODAY = 2019-03-11
VERSION = 3.4.1
NEWTAG = 3.4.1 2019-03-11
OLDTAG = 3.4.1 2019-03-01
MODULES = met_fields.f90 functions.f90 module_llxy.f90 wrf_netcdf.f90 \
parse_control.f90
SOURCES = aggregate.f90 avg_zface.f90 cloud_cover.f90 interpolate.f90 \
landuse.f90 mmif.f90 output_aercoare.f90 output_aermet.f90 \
output_calmet.f90 output_onsite.f90 output_scichem.f90 \
pasquill_gifford.f90 pbl_height.f90 read_mm5.f90 read_wrf.f90 \
sfc_layer.f90 timesubs.f90
OBJECTS = $(SOURCES:.f90=.o)
MODOBJS = $(MODULES:.f90=.o)
MODMODS = $(MODULES:.f90=.mod)
$(PROGRAM): $(MODOBJS) $(OBJECTS)
$(FC) $(FFLAGS) $(MODOBJS) $(OBJECTS) $(LIBS) -o $#
%.o : %.f90
$(FC) $(FFLAGS) $(INCL) -c $< -o $#
install: $(PROGRAM)
cp $(PROGRAM) /usr/local/bin
update_version:
sed -i "s|VERSION $(OLDTAG)|VERSION $(NEWTAG)|g" \
*.f90 README.txt makefile makefile.windows mmif_change_log.txt
distro:
mmif --sample > mmif.inp
unix2dos *.f90 *.sh makefile.windows old_compile.bat README*.txt mmif.inp
zip -j MMIFv$(VERSION)_$(TODAY).zip \
mmif.exe mmif mmif.inp *.f90 *.sh makefile \
makefile.windows old_compile.bat README*.txt \
MMIFv$(VERSION)_Users_Manual.pdf \
mmif_change_log.txt test_problems/*/*.inp
dos2unix *.f90
test_pkg:
zip -r MMIFv$(VERSION)_test_problems.zip \
test_problems -x \*/wrf/\* \*/mm5/\*
test_pkg_mm5+wrf:
zip -r MMIF_test_problems_mm5+wrf.zip \
test_problems/wrf \
test_problems/mm5
clean:
rm $(MODMODS) $(MODOBJS) $(OBJECTS) $(PROGRAM)
Library
-------
This netCDF 4.6.0 has been built with the following features:
--cc -> /usr/bin/cc
--cflags -> -I/usr/include -I/usr/include/hdf5/serial
--libs -> -L/usr/lib/x86_64-linux-gnu -L/usr/lib/x86_64-linux-gnu/hdf5/serial -lnetcdf -lhdf5_hl -lhdf5 -lpthread -lsz -lz -ldl -lm -lcurl
--has-c++ -> no
--cxx ->
--has-c++4 -> no
--cxx4 ->
--has-fortran-> yes
--fc -> gfortran
--fflags -> -I/usr/include
--flibs -> -L/usr/lib -lnetcdff -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -lnetcdf -lnetcdf
--has-f90 -> no
--has-f03 -> yes
--has-dap -> yes
--has-dap2 -> yes
--has-dap4 -> yes
--has-nc2 -> yes
--has-nc4 -> yes
--has-hdf5 -> yes
--has-hdf4 -> no
--has-logging-> no
--has-pnetcdf-> no
--has-szlib -> no
--has-cdf5 -> no
--has-parallel-> no
--prefix -> /usr
--includedir-> /usr/include
--libdir -> /usr/lib/x86_64-linux-gnu
--version -> netCDF 4.6.0

GCC : undefined reference to "__asan_init_v1"

I want to compile my C99 project with the flag -fsanitize=address. I need to use CMake and to compile with gcc on a Centos 7 distribution.
I currently have gcc 7.3.1 and cmake 3.13.4.
I added the -fsanitize=address flag in the compilation flags list and in the linker, but it still fails to compile with the following error:
[ 6%] Building C object CMakeFiles/last.dir/src/ast/ast.c.o
[ 13%] Building C object CMakeFiles/last.dir/src/ast/ast_printer.c.o
[ 20%] Building C object CMakeFiles/last.dir/src/ast/cleaner.c.o
[ 26%] Linking C static library liblast.a
[ 26%] Built target last
[ 33%] Building C object CMakeFiles/lexecution.dir/src/execution/exec_parser.c.o
[ 40%] Building C object CMakeFiles/lexecution.dir/src/execution/exec_utils.c.o
[ 46%] Building C object CMakeFiles/lexecution.dir/src/execution/exec_func.c.o
[ 53%] Building C object CMakeFiles/lexecution.dir/src/execution/exec_parser_options.c.o
[ 60%] Linking C static library liblexecution.a
[ 60%] Built target lexecution
[ 66%] Building C object CMakeFiles/lutils.dir/tests/utils/utils.c.o
[ 73%] Linking C static library liblutils.a
[ 73%] Built target lutils
[ 80%] Building C object CMakeFiles/lhist.dir/src/history/history.c.o
[ 86%] Linking C static library liblhist.a
[ 86%] Built target lhist
[ 93%] Building C object CMakeFiles/42sh.dir/src/execution/exec_42sh.c.o
[100%] Linking C executable 42sh
/usr/lib/gcc/x86_64-redhat-linux/4.8.5/libasan_preinit.o:(.preinit_array+0x0) : undefined reference to « __asan_init_v1 »
CMakeFiles/42sh.dir/src/execution/exec_42sh.c.o : In function « _GLOBAL__sub_I_00099_1_flag » :
/home/lyro/Documents/customshell/src/execution/exec_42sh.c:304 : undefined reference to « __asan_init_v1 »
liblexecution.a(exec_parser.c.o) : In function « _GLOBAL__sub_I_00099_1_parser_new_from_string » :
/home/lyro/Documents/customshell/src/execution/exec_parser.c:1105 : undefined reference to « __asan_init_v1 »
liblexecution.a(exec_utils.c.o) : In function « _GLOBAL__sub_I_00099_0_get_args_array » :
/home/lyro/Documents/customshell/src/execution/exec_utils.c:242 : undefined reference to « __asan_init_v1 »
liblexecution.a(exec_func.c.o) : In function « _GLOBAL__sub_I_00099_1_exec_ast » :
/home/lyro/Documents/customshell/src/execution/exec_func.c:187 : undefined reference to « __asan_init_v1 »
liblexecution.a(exec_parser_options.c.o):/home/lyro/Documents/customshell/src/execution/exec_parser_options.c:149 : more undefined references to « __asan_init_v1 »
collect2: error: ld returned 1 execution state code
make[2]: *** [42sh] Error 1
make[1]: *** [CMakeFiles/42sh.dir/all] Error 2
make: *** [all] Error 2
Here is my CMakeLists.txt file, I can't find what I am missing..
cmake_minimum_required(VERSION 3.0)
project(42SH LANGUAGES C)
add_compile_options(-Wall -Wextra -Werror -pedantic -fsanitize=address -g -std=c99)
add_library(last ${CMAKE_SOURCE_DIR}/src/ast/ast.c ${CMAKE_SOURCE_DIR}/src/ast/ast_printer.c ${CMAKE_SOURCE_DIR}/src/ast/cleaner.c)
target_include_directories(last PUBLIC ${CMAKE_SOURCE_DIR}/src/ast)
add_library(lutils ${CMAKE_SOURCE_DIR}/tests/utils/utils.c)
target_include_directories(lutils PUBLIC ${CMAKE_SOURCE_DIR}/tests/utils)
target_link_libraries(lutils -fsanitize=address lexecution)
add_library(lexecution ${CMAKE_SOURCE_DIR}/src/execution/exec_parser.c ${CMAKE_SOURCE_DIR}/src/execution/exec_utils.c ${CMAKE_SOURCE_DIR}/src/execution/exec_func.c ${CMAKE_SOURCE_DIR}/src/execution/exec_parser_options.c)
target_include_directories(lexecution PUBLIC ${CMAKE_SOURCE_DIR}/src/ast)
target_link_libraries(lexecution -fsanitize=address last)
add_library(lhist ${CMAKE_SOURCE_DIR}/src/history/history.c)
target_include_directories(lhist PUBLIC ${CMAKE_SOURCE_DIR}/src/history)
add_executable(42sh src/execution/exec_42sh.c)
target_link_libraries(42sh -fsanitize=address lexecution)
target_link_libraries(42sh -fsanitize=address lutils)
target_link_libraries(42sh -fsanitize=address last)
target_link_libraries(42sh -fsanitize=address lhist)
add_custom_target(submit
COMMENT "Compiled for submission. Sanitizers ON."
COMMENT "Don't use Valgrind on this executable. It will not work."
DEPENDS 42sh
)
add_custom_target(tests
COMMAND pytest ${CMAKE_SOURCE_DIR}/tests
COMMENT "Running testsuite..."
DEPENDS 42sh
)
add_custom_target(doc
COMMENT "Compiling documentation"
COMMAND doxygen ${CMAKE_SOURCE_DIR}/doc/Doxyfile
COMMENT "Compiled documentation"
)
Your toolchain is somewhat confused about which version of GCC it is and
the linkage failure is one consequence of that confusion.
You tell us you are using GCC 7.3.1, but the first of the unresolved references to __asan_init_v1:
/usr/lib/gcc/x86_64-redhat-linux/4.8.5/libasan_preinit.o:(.preinit_array+0x0) : undefined reference to « __asan_init_v1
shows that the gcc that invoked the linkage with -fsanitize=address linked the address santitizer initialization code
from your installation of GCC 4.8.5.
In GCC 7, the file libasan_preinit.o makes no references to __asan_init_v1, as seen on
the laptop I'm working on just now:
$ nm /usr/lib/gcc/x86_64-linux-gnu/7/libasan_preinit.o
U __asan_init
0000000000000000 D __local_asan_preinit
It calls __asan_init, which is indeed defined in the toolchain's libasan:
$ nm -D /usr/lib/gcc/x86_64-linux-gnu/7/libasan.so | grep __asan_init
00000000000ecdb0 T __asan_init
On the other hand, in GCC 4.8.5, libasan did not define the function __asan_init
and did define __asan_init_v1:
:~/Downloads/gcc-4.8.5$ grep -r '__asan_init_v'
gcc/ChangeLog: * sanitizer.def: Rename __asan_init to __asan_init_v1.
gcc/sanitizer.def:DEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_INIT, "__asan_init_v1",
libsanitizer/asan/asan_interface_internal.h: void __asan_init_v1() SANITIZER_INTERFACE_ATTRIBUTE;
libsanitizer/asan/asan_interface_internal.h: #define __asan_init __asan_init_v1
There, __asan_init was just an internal #define aliasing the real function __asan_init_v1, as
per libsanitizer/asan/asan_interface_internal.h, but in that file in GCC 7
// This function should be called at the very beginning of the process,
// before any instrumented code is executed and before any call to malloc.
SANITIZER_INTERFACE_ATTRIBUTE void __asan_init();
it is a real function, as reported by nm.
So the thrust of the evidence is that you are linking against the libasan of GCC 7.3.1
but also linking the library initialization code of GCC 4.8.5. I have no visibility of
how you've landed in this GCC version mash-up - could be a packaging bug, for all I know - but
you'll have to fix that to solve these linkage failures.

GCC undefined references on build

I am trying to build an exe for windows amd64 using golang. Everything is running smoothly except on "go run" or "go build". The build process is breaking on gcc compile of the package from github.com/andlabs/ui. The trace goes as follows:
$ go build
# gitlab.com/asnossascenas/dbRegistration/ui
C:\Users\Pat\AppData\Local\Temp\go-
build167765418\gitlab.com\asnossascenas\dbRegistration\ui\_obj\table.cgo2.o:
In function `_cgo_1e2a701ee86d_Cfunc_uiNewTable':
/tmp/go-build\gitlab.com\asnossascenas\dbRegistration\ui\_obj/cgo-gcc-
prolog:66: undefined reference to `uiNewTable'
C:\Users\Pat\AppData\Local\Temp\go-
build167765418\gitlab.com\asnossascenas\dbRegistration\ui\_obj\table.cgo2.o:
In function `_cgo_1e2a701ee86d_Cfunc_uiNewTableModel':
/tmp/go-build\gitlab.com\asnossascenas\dbRegistration\ui\_obj/cgo-gcc-
prolog:83: undefined reference to `uiNewTableModel'
C:\Users\Pat\AppData\Local\Temp\go-
build167765418\gitlab.com\asnossascenas\dbRegistration\ui\_obj\table.cgo2.o:
In function `_cgo_1e2a701ee86d_Cfunc_uiTableAppendTextColumn':
/tmp/go-build\gitlab.com\asnossascenas\dbRegistration\ui\_obj/cgo-gcc-
prolog:103: undefined reference to `uiTableAppendTextColumn'
C:\Users\Pat\AppData\Local\Temp\go-
build167765418\gitlab.com\asnossascenas\dbRegistration\ui\_obj\table.cgo2.o:
In function `_cgo_1e2a701ee86d_Cfunc_uiTableGetSelection':
/tmp/go-build\gitlab.com\asnossascenas\dbRegistration\ui\_obj/cgo-gcc-
prolog:120: undefined reference to `uiTableGetSelection'
C:\Users\Pat\AppData\Local\Temp\go-
build167765418\gitlab.com\asnossascenas\dbRegistration\ui\_obj\table.cgo2.o:
In function `_cgo_1e2a701ee86d_Cfunc_uiTableIterAdvance':
/tmp/go-build\gitlab.com\asnossascenas\dbRegistration\ui\_obj/cgo-gcc-
prolog:138: undefined reference to `uiTableIterAdvance'
C:\Users\Pat\AppData\Local\Temp\go-
build167765418\gitlab.com\asnossascenas\dbRegistration\ui\_obj\table.cgo2.o:
In function `_cgo_1e2a701ee86d_Cfunc_uiTableIterCurrent':
/tmp/go-build\gitlab.com\asnossascenas\dbRegistration\ui\_obj/cgo-gcc-
prolog:168: undefined reference to `uiTableIterCurrent'
C:\Users\Pat\AppData\Local\Temp\go-
build167765418\gitlab.com\asnossascenas\dbRegistration\ui\_obj\table.cgo2.o:
In function `realuiTableOnSelectionChanged':
C:/GoPath/src/gitlab.com/asnossascenas/dbRegistration/ui/table.go:12:
undefined reference to `uiTableOnSelectionChanged'
C:\Users\Pat\AppData\Local\Temp\go-
build167765418\gitlab.com\asnossascenas\dbRegistration\ui\_obj\table.cgo2.o:
In function `_cgo_1e2a701ee86d_Cfunc_uiFreeTableModel':
/tmp/go-build\gitlab.com\asnossascenas\dbRegistration\ui\_obj/cgo-gcc-
prolog:49: undefined reference to `uiFreeTableModel'
C:\Users\Pat\AppData\Local\Temp\go-
build167765418\gitlab.com\asnossascenas\dbRegistration\ui\_obj\table.cgo2.o:
In function `_cgo_1e2a701ee86d_Cfunc_uiTableIterComplete':
/tmp/go-build\gitlab.com\asnossascenas\dbRegistration\ui\_obj/cgo-gcc-
prolog:152: undefined reference to `uiTableIterComplete'
C:\Users\Pat\AppData\Local\Temp\go-
build167765418\gitlab.com\asnossascenas\dbRegistration\ui\_obj\table.cgo2.o:
In function `_cgo_1e2a701ee86d_Cfunc_uiTableModelRowChanged':
/tmp/go-build\gitlab.com\asnossascenas\dbRegistration\ui\_obj/cgo-gcc-
prolog:184: undefined reference to `uiTableModelRowChanged'
C:\Users\Pat\AppData\Local\Temp\go-
build167765418\gitlab.com\asnossascenas\dbRegistration\ui\_obj\table.cgo2.o:
In function `_cgo_1e2a701ee86d_Cfunc_uiTableModelRowDeleted':
/tmp/go-build\gitlab.com\asnossascenas\dbRegistration\ui\_obj/cgo-gcc-
prolog:198: undefined reference to `uiTableModelRowDeleted'
C:\Users\Pat\AppData\Local\Temp\go-
build167765418\gitlab.com\asnossascenas\dbRegistration\ui\_obj\table.cgo2.o:
In function `_cgo_1e2a701ee86d_Cfunc_uiTableModelRowInserted':
/tmp/go-build\gitlab.com\asnossascenas\dbRegistration\ui\_obj/cgo-gcc-
prolog:212: undefined reference to `uiTableModelRowInserted'
C:\Users\Pat\AppData\Local\Temp\gobuild167765418\gitlab.com
\asnossascenas\dbRegistration\ui\_obj\tablemodelhandler.cgo2.o: In function
`_cgo_1e2a701ee86d_Cfunc_uiTableModelStrdup':
/tmp/go-build\gitlab.com\asnossascenas\dbRegistration\ui\_obj/cgo-gcc-
prolog:68: undefined reference to `uiTableModelStrdup'o `uiTableModelStrdup'
function `msgbox':
C:/GoPath/src/gitlab.com/asnossascenas/
dbRegistration/ui/libui_windows_amd64.a(stddialogs.cpp.obj): In function
`msgbox':E:/github.com/andlabs/libui/windows/stddialogs.cpp:113: undefined
reference to `__imp_TaskDialog'
collect2.exe: error: ld returned 1 exit status
I initially tried to crosscompile from linux to windows having roughly the same problem so I guess it's a matter of either the flags I should use to build it or maybe I am missing something dependency related...
I tried using CGO_ENABLED=1 and pretty much every other combination of flags possible on linux to crosscompile, sometimes triggering the error
gcc: error: unrecognized command line option ‘-mthreads’
eventually I decided I should move to Windows and compile natively, which doesn't seem to be working.
I am willing to provide any more information you might need to help me figure this out.
According to the the installation instructions for the ui package you will need to install MingW and set some some environment variables to get it to build:
set CGO_ENABLED=1
set CC=C:\PROGRA~1\mingw-w64\x86_64-7.2.0-win32-seh-rt_v5-rev1\mingw64\bin\gcc.exe
set CXX=C:\PROGRA~1\mingw-w64\x86_64-7.2.0-win32-seh-rt_v5-rev1\mingw64\bin\g++.exe
go build -ldflags -H=windowsgui

compiling ffmpeg on msys2 and mingw32-- error creating ffmpeg_g.exe

I have compiled ffmpeg from source using MSYS2 and MinGW. The library files were created successfully during the compilation and when make utility proceeds to build ffmpeg_g, I am getting lot of undefined references.Kindly tell me why the compilation fails....
Thanks in advance
The following library files were generated successfully
libavcodec.a
libavdvice.a
libavfilter.a
libavformat.a
libavutil.a
libpostproc.a
libswresample.a
libswscale.a
Command passed for compiling ffmpeg_g.exe output taken by using -d option with mke
g++ -Llibavcodec -Llibavdevice -Llibavfilter -Llibavformat -Llibavresample -Llibavutil -Llibpostproc -Llibswscale -Llibswresample -Wl,--nxcompat -Wl,--dynamicbase -Wl,--as-needed -Wl,--warn-common -Wl,-rpath-link=libpostproc:libswresample:libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample -o ffmpeg_g.exe ffmpeg_opt.o ffmpeg_filter.o ffmpeg.o cmdutils.o -lavdevice -lavfilter -lavformat -lavcodec -lpostproc -lswresample -lswscale -lavutil -lavicap32 -lpsapi -lole32 -lstrmiids -luuid -lws2_32 -lx264 -lvpx -lvpx -lvpx -lvpx -lvorbisenc -lvorbis -logg -lopenjpeg -lmp3lame -lfdk-aac -lfaac -lbluray -L/mingw32/lib -lass -lm -lharfbuzz -lfontconfig -lexpat -lfreetype -lexpat -lenca -lm -lfribidi -lglib-2.0 -lintl -lws2_32 -lole32 -lwinmm -lshlwapi -lintl -lfreetype -lz -lbz2 -lm -lbz2 -lz -lpsapi -ladvapi32 -lshell32
The output from gcc is given below
ffmpeg_opt.o: In function new_output_stream:
E:\software\pkg\ffmpeg-2.1.3.tar\ffmpeg-2.1.3\ffmpeg-2.1.3/ffmpeg_opt.c:1036: undefined reference to avcodec_get_context_defaults3
E:\software\pkg\ffmpeg-2.1.3.tar\ffmpeg-2.1.3\ffmpeg-2.1.3/ffmpeg_opt.c:1089: undefined reference to av_get_exact_bits_per_sample
ffmpeg_opt.o: In function find_codec_or_die:
E:\software\pkg\ffmpeg-2.1.3.tar\ffmpeg-2.1.3\ffmpeg-2.1.3/ffmpeg_opt.c:514: undefined reference to avcodec_find_encoder_by_name
ffmpeg_opt.o: In function choose_encoder:
E:\software\pkg\ffmpeg-2.1.3.tar\ffmpeg-2.1.3\ffmpeg-2.1.3/ffmpeg_opt.c:965: undefined reference to avcodec_find_encoder
ffmpeg_opt.o: In function find_codec_or_die:
E:\software\pkg\ffmpeg-2.1.3.tar\ffmpeg-2.1.3\ffmpeg-2.1.3/ffmpeg_opt.c:518: undefined reference to avcodec_find_encoder
E:\software\pkg\ffmpeg-2.1.3.tar\ffmpeg-2.1.3\ffmpeg-2.1.3/ffmpeg_opt.c:514: undefined reference to avcodec_find_decoder_by_name
E:\software\pkg\ffmpeg-2.1.3.tar\ffmpeg-2.1.3\ffmpeg-2.1.3/ffmpeg_opt.c:518: undefined reference to avcodec_find_decoder
ffmpeg_opt.o: In function add_input_streams:
E:\software\pkg\ffmpeg-2.1.3.tar\ffmpeg-2.1.3\ffmpeg-2.1.3/ffmpeg_opt.c:596: undefined reference to av_codec_get_lowres
ffmpeg_opt.o: In function choose_decoder:
E:\software\pkg\ffmpeg-2.1.3.tar\ffmpeg-2.1.3\ffmpeg-2.1.3/ffmpeg_opt.c:546: undefined reference to avcodec_find_decoder
ffmpeg_opt.o: In function add_input_streams:
E:\software\pkg\ffmpeg-2.1.3.tar\ffmpeg-2.1.3\ffmpeg-2.1.3/ffmpeg_opt.c:546: undefined reference to avcodec_find_decoder
ffmpeg_opt.o: In function open_input_file:
E:\software\pkg\ffmpeg-2.1.3.tar\ffmpeg-2.1.3\ffmpeg-2.1.3/ffmpeg_opt.c:872: undefined reference to avcodec_get_class
ffmpeg_opt.o: In function add_input_streams:
E:\software\pkg\ffmpeg-2.1.3.tar\ffmpeg-2.1.3\ffmpeg-2.1.3/ffmpeg_opt.c:631: undefined reference to avcodec_find_decoder
E:\software\pkg\ffmpeg-2.1.3.tar\ffmpeg-2.1.3\ffmpeg-2.1.3/ffmpeg_opt.c:595: undefined reference to avcodec_find_decoder
lot of undefined references followed by
E:\software\pkg\ffmpeg-2.1.3.tar\ffmpeg-2.1.3\ffmpeg-2.1.3/libavcodec/mlpdsp.c:64: undefined reference to ff_mlpdsp_init_x86
libavcodec/libavcodec.a(mpegaudiodsp.o): In function ff_mpadsp_init:
E:\software\pkg\ffmpeg-2.1.3.tar\ffmpeg-2.1.3\ffmpeg-2.1.3/libavcodec/mpegaudiodsp.c:46: undefined reference to ff_mpadsp_init_x86
libavcodec/libavcodec.a(cavsdsp.o): In function ff_cavsdsp_init:
E:\software\pkg\ffmpeg-2.1.3.tar\ffmpeg-2.1.3\ffmpeg-2.1.3/libavcodec/cavsdsp.c:565: undefined reference to ff_cavsdsp_init_x86
collect2.exe: error: ld returned 1 exit status
Make output
LD ffmpeg_g.exe
Reaping losing child 01584DA0 PID 29691080
Makefile:105: recipe for target ffmpeg_g.exe failed
Removing child 01584DA0 PID 29691080 from chain.

sparse - Fixing build warnings

I'm compiling the sparse - linux kernel checking tool.
But it throws the following warning:
lovegcy#knltest-VirtualBox:~/git_root/sparse$ make
GEN version.h
/bin/sh: 1: llvm-config: not found
Makefile:63: Your system does not have libxml, disabling c2xml
Makefile:75: Your system does not have libgtk2, disabling test-inspect
Makefile:79: Your system does not have llvm, disabling sparse-llvm
CC test-lexing.o
CC target.o
CC parse.o
CC tokenize.o
CC pre-process.o
CC symbol.o
CC lib.o
CC scope.o
CC expression.o
CC show-parse.o
CC evaluate.o
CC expand.o
CC inline.o
CC linearize.o
CC char.o
CC sort.o
CC allocate.o
CC compat-linux.o
CC ptrlist.o
CC flow.o
CC cse.o
CC simplify.o
CC memops.o
CC liveness.o
CC storage.o
CC unssa.o
CC dissect.o
AR libsparse.a
LINK test-lexing
CC test-parsing.o
LINK test-parsing
CC obfuscate.o
LINK obfuscate
CC compile.o
CC compile-i386.o
compile-i386.c: In function ‘emit_insn_atom’:
compile-i386.c:719:7: warning: ignoring return value of ‘write’, declared with attribute warn_unused_result [-Wunused-result]
LINK compile
CC graph.o
LINK graph
CC sparse.o
LINK sparse
CC test-linearize.o
LINK test-linearize
CC example.o
LINK example
CC test-unssa.o
LINK test-unssa
CC test-dissect.o
LINK test-dissect
CC ctags.o
LINK ctags
GEN sparse.pc
Fix the following
Makefile:63: Your system does not have libxml, disabling c2xml
Makefile:75: Your system does not have libgtk2, disabling test-inspect
by:
$ sudo apt-get install libxml2-dev libgtk2.0-dev
For
/bin/sh: 1: llvm-config: not found
Makefile:79: Your system does not have llvm, disabling sparse-llvm
the llvm-3.2-dev is installed, but it is still there.
I still donot know how to fix the following warning too:
compile-i386.c: In function ‘emit_insn_atom’:
compile-i386.c:719:7: warning: ignoring return value of ‘write’, declared with attribute warn_unused_result [-Wunused-result]
Could anyone give some suggestions?
Thank you very much!
Update : Following TheCodeArtist's suggestion, here is the build error log after llvm installed.
lovegcy#knltest-VirtualBox:~/git_root/sparse$ make
CC test-lexing.o
CC target.o
CC parse.o
CC tokenize.o
CC pre-process.o
CC symbol.o
CC lib.o
CC scope.o
CC expression.o
CC show-parse.o
CC evaluate.o
CC expand.o
CC inline.o
CC linearize.o
CC char.o
CC sort.o
CC allocate.o
CC compat-linux.o
CC ptrlist.o
CC flow.o
CC cse.o
CC simplify.o
CC memops.o
CC liveness.o
CC storage.o
CC unssa.o
CC dissect.o
AR libsparse.a
LINK test-lexing
CC test-parsing.o
LINK test-parsing
CC obfuscate.o
LINK obfuscate
CC compile.o
CC compile-i386.o
compile-i386.c: In function ‘emit_insn_atom’:
compile-i386.c:719:7: warning: ignoring return value of ‘write’, declared with attribute warn_unused_result [-Wunused-result]
LINK compile
CC graph.o
LINK graph
CC sparse.o
LINK sparse
CC test-linearize.o
LINK test-linearize
CC example.o
LINK example
CC test-unssa.o
LINK test-unssa
CC test-dissect.o
LINK test-dissect
CC ctags.o
LINK ctags
CC c2xml.o
LINK c2xml
CC test-inspect.o
CC ast-model.o
CC ast-view.o
CC ast-inspect.o
LINK test-inspect
CC sparse-llvm.o
LINK sparse-llvm
/usr/lib/llvm-3.2/lib/libLLVMSupport.a(Signals.o): In function PrintStackTrace(void*)':
(.text+0x74): undefined reference todladdr'
/usr/lib/llvm-3.2/lib/libLLVMSupport.a(Signals.o): In function PrintStackTrace(void*)':
(.text+0x1fe): undefined reference todladdr'
/usr/lib/llvm-3.2/lib/libLLVMSupport.a(Mutex.o): In function llvm::sys::MutexImpl::MutexImpl(bool)':
(.text+0x58): undefined reference topthread_mutexattr_init'
/usr/lib/llvm-3.2/lib/libLLVMSupport.a(Mutex.o): In function llvm::sys::MutexImpl::MutexImpl(bool)':
(.text+0x64): undefined reference topthread_mutexattr_settype'
/usr/lib/llvm-3.2/lib/libLLVMSupport.a(Mutex.o): In function llvm::sys::MutexImpl::MutexImpl(bool)':
(.text+0x74): undefined reference topthread_mutexattr_setpshared'
/usr/lib/llvm-3.2/lib/libLLVMSupport.a(Mutex.o): In function llvm::sys::MutexImpl::MutexImpl(bool)':
(.text+0x88): undefined reference topthread_mutexattr_destroy'
/usr/lib/llvm-3.2/lib/libLLVMSupport.a(Mutex.o): In function llvm::sys::MutexImpl::tryacquire()':
(.text+0x179): undefined reference topthread_mutex_trylock'
/usr/lib/llvm-3.2/lib/libLLVMSupport.a(RWMutex.o): In function llvm::sys::RWMutexImpl::RWMutexImpl()':
(.text+0x3e): undefined reference topthread_rwlock_init'
/usr/lib/llvm-3.2/lib/libLLVMSupport.a(RWMutex.o): In function llvm::sys::RWMutexImpl::~RWMutexImpl()':
(.text+0x80): undefined reference topthread_rwlock_destroy'
/usr/lib/llvm-3.2/lib/libLLVMSupport.a(RWMutex.o): In function llvm::sys::RWMutexImpl::reader_acquire()':
(.text+0xb9): undefined reference topthread_rwlock_rdlock'
/usr/lib/llvm-3.2/lib/libLLVMSupport.a(RWMutex.o): In function llvm::sys::RWMutexImpl::reader_release()':
(.text+0xe9): undefined reference topthread_rwlock_unlock'
/usr/lib/llvm-3.2/lib/libLLVMSupport.a(RWMutex.o): In function llvm::sys::RWMutexImpl::writer_acquire()':
(.text+0x119): undefined reference topthread_rwlock_wrlock'
/usr/lib/llvm-3.2/lib/libLLVMSupport.a(RWMutex.o): In function llvm::sys::RWMutexImpl::writer_release()':
(.text+0x149): undefined reference topthread_rwlock_unlock'
/usr/lib/llvm-3.2/lib/libLLVMSupport.a(ThreadLocal.o): In function llvm::sys::ThreadLocalImpl::~ThreadLocalImpl()':
(.text+0x25): undefined reference topthread_key_delete'
/usr/lib/llvm-3.2/lib/libLLVMSupport.a(ThreadLocal.o): In function llvm::sys::ThreadLocalImpl::ThreadLocalImpl()':
(.text+0xae): undefined reference topthread_key_create'
/usr/lib/llvm-3.2/lib/libLLVMSupport.a(ThreadLocal.o): In function llvm::sys::ThreadLocalImpl::setInstance(void const*)':
(.text+0xe2): undefined reference topthread_setspecific'
/usr/lib/llvm-3.2/lib/libLLVMSupport.a(ThreadLocal.o): In function llvm::sys::ThreadLocalImpl::getInstance()':
(.text+0x10a): undefined reference topthread_getspecific'
/usr/lib/llvm-3.2/lib/libLLVMSupport.a(Threading.o): In function llvm::llvm_execute_on_thread(void (*)(void*), void*, unsigned int)':
(.text+0x1c2): undefined reference topthread_create'
/usr/lib/llvm-3.2/lib/libLLVMSupport.a(Threading.o): In function llvm::llvm_execute_on_thread(void (*)(void*), void*, unsigned int)':
(.text+0x1da): undefined reference topthread_join'
/usr/lib/llvm-3.2/lib/libLLVMSupport.a(Threading.o): In function llvm::llvm_execute_on_thread(void (*)(void*), void*, unsigned int)':
(.text+0x20c): undefined reference topthread_attr_setstacksize'
collect2: error: ld returned 1 exit status
make: * [sparse-llvm] Error 1
Properly installing llvm :
During the build, for make to detect llvm on the system ,llvm-config is required to be installed on your system properly. On Ubuntu, the following command will download(~16MB packages) and install all the dependencies correctly
$ sudo apt-get install llvm
Download the latest source of sparse
$ git clone git://git.kernel.org/pub/scm/devel/sparse/sparse.git
Build and install sparse
$ cd sparse
$ make
$ make install
(Tested on Ubuntu 10.04)
Fixing the innocuous Warning :
The following error is harmless in the current context as we are not concerned with the result of the call to write() at line 719 of compile-i386.c
compile-i386.c:719:7: warning: ignoring return value of ‘write’, declared with attribute warn_unused_result [-Wunused-result]
Fixing this error is as simple as modifying line 719 of compile-i386.c to
comment[0] = write(STDOUT_FILENO, s, strlen(s));
This warning is triggered during build due to the -Wall (Enable ALL warnings) flag passed to gcc at line 16 of the Makefile
CFLAGS += -Wall -Wwrite-strings

Resources