Hi,
Short version: unless I made a mistake, I think that the shared
libraries pjmedia, pjmedia-audiodev and pjmedia-videodev should be
merged to a single shared library.
Long version:
I'm the maintainer of the pjproject (pjsip) packages for Debian[1].
Currently the package includes a single source package that builds
multiple binary packages, one per shared library, as per the Debian
Policy Manual[2].
One problem with the package is that the libraries include too many
run-time dependencies: I originally packaged it for Asterisk (which uses
pjsip and a few other componenets, but not pjmedia and such).
However the way the current build system works, all libraries are linked
with any library that is needed for any other library.
This is not an issue with static linking. But it is an issue with shared
libraries built in a generic configuration. Specifically, when I start
getting bug reports about Asterisk linking with -SDL[3].
Originally we tried to fix this by an increasingly intrusive set of
changes to the build system to avoid passing unneccesary build flags.
Current master has them[4]. But this didn't seem to be a useful
direction.
So I realised that what I needed was not linking libraries that are not
really needed. So what I really needed was linking with --as-needed[5].
This resulted in quite a few linking errors. Most were fixed by changes
to ldflags ordering[6].
Sadly I failed to make pjmedia and the rest of the pjmedia* libraries
link. It seems pjpedia needs symbols from pjmedia-audiodev and
pjmedia-videodev and vice-versa (See traces below). So I guess this
means the three libraries cannot be separated and need to be merged to a
single shared library.
[1] https://tracker.debian.org/pkg/pjproject
[2] https://www.debian.org/doc/debian-policy/ch-sharedlibs.html#s-sharedlibs-runtime
[3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=795825
[6] Almost all of the following:
http://anonscm.debian.org/cgit/pkg-voip/pjproject.git/commit/?h=master-broken-2&id=09439f0f520ad37b90d2b5d0774e1fc68e9398f0
all besides the changes to pjmedia/build/Makefile, except the first
hunk that is included.
With pjmedia/build/Makefile changes removed:
---===========
...
ranlib ../lib/libpjmedia-videodev-x86_64-pc-linux-gnu.a
make[4]: Leaving directory '/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build'
make -f /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/build/rules.mak APP=PJMEDIA_VIDEODEV app=pjmedia-videodev ../lib/libpjmedia-videodev.so
make[4]: Entering directory '/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build'
if test ! -d ../lib; then mkdir -p ../lib; fi
gcc -o ../lib/libpjmedia-videodev.so.2
output/pjmedia-videodev-x86_64-pc-linux-gnu/sdl_dev.o output/pjmedia-videodev-x86_64-pc-linux-gnu/errno.o output/pjmedia-videodev-x86_64-pc-linux-gnu/videodev.o output/pjmedia-videodev-x86_64-pc-linux-gnu/avi_dev.o output/pjmedia-videodev-x86_64-pc-linux-gnu/ffmpeg_dev.o output/pjmedia-videodev-x86_64-pc-linux-gnu/colorbar_dev.o output/pjmedia-videodev-x86_64-pc-linux-gnu/v4l2_dev.o output/pjmedia-videodev-x86_64-pc-linux-gnu/opengl_dev.o output/pjmedia-videodev-x86_64-pc-linux-gnu/util.o -lpj -lsrtp -lgsm -lspeex -lspeexdsp -lportaudio -Wl,-z,defs -Wl,--as-needed -Wl,-z,relro -lssl -lcrypto -luuid -lm -lrt -lpthread -lasound -L/usr/lib/x86_64-linux-gnu -lSDL2 -lavformat-ffmpeg -lavcodec-ffmpeg -lswscale-ffmpeg -lavutil-ffmpeg -lv4l2 -lopencore-amrnb -lopencore-amrwb -L/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjlib/lib -L/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjlib-util/lib -L/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjnath/lib -L/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/lib -L/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjsip/lib -L/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/third_party/lib -L/usr/lib/x86_64-linux-gnu -lSDL2 -lavformat-ffmpeg -lavcodec-ffmpeg -lswscale-ffmpeg -lavutil-ffmpeg -lv4l2 -L/usr/lib/x86_64-linux-gnu -lSDL2 -lavformat-ffmpeg -lavcodec-ffmpeg -lswscale-ffmpeg -lavutil-ffmpeg -lv4l2 -Wl,-z,defs -Wl,--as-needed -Wl,-z,relro -Wl,-z,defs -Wl,--as-needed -Wl,-z,relro -L/usr/lib/x86_64-linux-gnu -lSDL2 -lavformat-ffmpeg -lavcodec-ffmpeg -lswscale-ffmpeg -lavutil-ffmpeg -lv4l2 -shared -Wl,-soname,libpjmedia-videodev.so.2
output/pjmedia-videodev-x86_64-pc-linux-gnu/sdl_dev.o: In function find_stream': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/sdl_dev.c:322: undefined reference to
pjmedia_event_init'
output/pjmedia-videodev-x86_64-pc-linux-gnu/sdl_dev.o: In function handle_event': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/sdl_dev.c:369: undefined reference to
pjmedia_event_publish'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/sdl_dev.c:389: undefined reference to pjmedia_event_init' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/sdl_dev.c:391: undefined reference to
pjmedia_event_publish'
output/pjmedia-videodev-x86_64-pc-linux-gnu/sdl_dev.o: In function sdl_create_rend': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/sdl_dev.c:685: undefined reference to
pjmedia_video_format_mgr_instance'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/sdl_dev.c:685: undefined reference to pjmedia_get_video_format_info' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/sdl_dev.c:685: undefined reference to
pjmedia_video_format_mgr_instance'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/sdl_dev.c:685: undefined reference to pjmedia_get_video_format_info' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/sdl_dev.c:695: undefined reference to
pjmedia_format_get_video_format_detail'
output/pjmedia-videodev-x86_64-pc-linux-gnu/sdl_dev.o: In function change_format': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/sdl_dev.c:865: undefined reference to
pjmedia_format_copy'
output/pjmedia-videodev-x86_64-pc-linux-gnu/sdl_dev.o: In function sdl_factory_init': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/sdl_dev.c:512: undefined reference to
pjmedia_format_init_video'
output/pjmedia-videodev-x86_64-pc-linux-gnu/avi_dev.o: In function avi_dev_strm_get_frame': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:626: undefined reference to
pjmedia_port_get_frame'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:633: undefined reference to pjmedia_port_get_frame' output/pjmedia-videodev-x86_64-pc-linux-gnu/avi_dev.o: In function
reset_dev_info':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:262: undefined reference to pjmedia_avi_streams_get_num_streams' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:266: undefined reference to
pjmedia_avi_streams_get_stream'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:270: undefined reference to pjmedia_port_destroy' output/pjmedia-videodev-x86_64-pc-linux-gnu/avi_dev.o: In function
avi_factory_create_stream':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:559: undefined reference to pjmedia_format_copy' output/pjmedia-videodev-x86_64-pc-linux-gnu/avi_dev.o: In function
pjmedia_avi_dev_alloc':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:407: undefined reference to pjmedia_avi_player_create_streams' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:413: undefined reference to
pjmedia_avi_streams_get_stream_by_media'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:422: undefined reference to pjmedia_format_copy' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:423: undefined reference to
pjmedia_get_video_format_info'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:432: undefined reference to pjmedia_vid_codec_mgr_get_codec_info2' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:438: undefined reference to
pjmedia_vid_codec_mgr_get_default_param'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:444: undefined reference to pjmedia_vid_codec_mgr_alloc_codec' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:461: undefined reference to
pjmedia_get_video_format_info'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:497: undefined reference to pjmedia_format_copy' output/pjmedia-videodev-x86_64-pc-linux-gnu/colorbar_dev.o: In function
cbar_factory_init':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/colorbar_dev.c:217: undefined reference to pjmedia_format_init_video' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/colorbar_dev.c:237: undefined reference to
pjmedia_format_init_video'
output/pjmedia-videodev-x86_64-pc-linux-gnu/colorbar_dev.o: In function cbar_stream_destroy': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/colorbar_dev.c:700: undefined reference to
pjmedia_clock_destroy'
output/pjmedia-videodev-x86_64-pc-linux-gnu/colorbar_dev.o: In function cbar_factory_create_stream': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/colorbar_dev.c:449: undefined reference to
pjmedia_format_get_video_format_detail'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/colorbar_dev.c:450: undefined reference to pjmedia_get_video_format_info' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/colorbar_dev.c:500: undefined reference to
pjmedia_clock_create2'
output/pjmedia-videodev-x86_64-pc-linux-gnu/colorbar_dev.o: In function cbar_stream_stop': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/colorbar_dev.c:684: undefined reference to
pjmedia_clock_stop'
output/pjmedia-videodev-x86_64-pc-linux-gnu/colorbar_dev.o: In function cbar_stream_start': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/colorbar_dev.c:671: undefined reference to
pjmedia_clock_start'
output/pjmedia-videodev-x86_64-pc-linux-gnu/v4l2_dev.o: In function v4l2_get_supported_size': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/v4l2_dev.c:269: undefined reference to
pjmedia_format_init_video'
output/pjmedia-videodev-x86_64-pc-linux-gnu/v4l2_dev.o: In function vid4lin_factory_create_stream': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/v4l2_dev.c:605: undefined reference to
pjmedia_get_video_format_info'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/v4l2_dev.c:610: undefined reference to pjmedia_format_get_video_format_detail' output/pjmedia-videodev-x86_64-pc-linux-gnu/v4l2_dev.o: In function
vid4lin_stream_init_fmt':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/v4l2_dev.c:483: undefined reference to pjmedia_format_get_video_format_detail' output/pjmedia-videodev-x86_64-pc-linux-gnu/v4l2_dev.o: In function
vid4lin_factory_default_param':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/v4l2_dev.c:469: undefined reference to pjmedia_format_copy' output/pjmedia-videodev-x86_64-pc-linux-gnu/util.o: In function
pjmedia_vid_dev_conv_create_converter':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/util.c:72: undefined reference to pjmedia_format_copy' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/util.c:73: undefined reference to
pjmedia_format_copy'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/util.c:74: undefined reference to pjmedia_format_copy' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/util.c:155: undefined reference to
pjmedia_converter_create'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/util.c:72: undefined reference to pjmedia_format_copy' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/util.c:73: undefined reference to
pjmedia_format_copy'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/util.c:74: undefined reference to pjmedia_format_copy' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/util.c:162: undefined reference to
pjmedia_get_video_format_info'
output/pjmedia-videodev-x86_64-pc-linux-gnu/util.o: In function pjmedia_vid_dev_conv_resize_and_rotate': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/util.c:236: undefined reference to
pjmedia_converter_convert'
output/pjmedia-videodev-x86_64-pc-linux-gnu/util.o: In function pjmedia_vid_dev_conv_destroy_converter': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/util.c:360: undefined reference to
pjmedia_converter_destroy'
collect2: error: ld returned 1 exit status
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/build/rules.mak:112: recipe for target '../lib/libpjmedia-videodev.so.2' failed
make[4]: *** [../lib/libpjmedia-videodev.so.2] Error 1
make[4]: Leaving directory '/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build'
Makefile:225: recipe for target 'libpjmedia-videodev.so' failed
make[3]: *** [libpjmedia-videodev.so] Error 2
make[3]: Leaving directory '/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build'
Makefile:14: recipe for target 'all' failed
make[2]: *** [all] Error 1
make[2]: Leaving directory '/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject'
dh_auto_build: make -j1 dep all returned exit code 2
debian/rules:44: recipe for target 'override_dh_auto_build' failed
make[1]: *** [override_dh_auto_build] Error 2
make[1]: Leaving directory '/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject'
debian/rules:17: recipe for target 'build' failed
make: *** [build] Error 2
With pjmedia/build/Makefile changes applied:
---===========
....
ranlib ../lib/libpjmedia-x86_64-pc-linux-gnu.a
make[4]: Leaving directory '/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build'
make -f /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/build/rules.mak APP=PJMEDIA app=pjmedia ../lib/libpjmedia.so
make[4]: Entering directory '/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build'
if test ! -d ../lib; then mkdir -p ../lib; fi
gcc -o ../lib/libpjmedia.so.2
output/pjmedia-x86_64-pc-linux-gnu/echo_speex.o output/pjmedia-x86_64-pc-linux-gnu/alaw_ulaw.o output/pjmedia-x86_64-pc-linux-gnu/alaw_ulaw_table.o output/pjmedia-x86_64-pc-linux-gnu/avi_player.o output/pjmedia-x86_64-pc-linux-gnu/bidirectional.o output/pjmedia-x86_64-pc-linux-gnu/clock_thread.o output/pjmedia-x86_64-pc-linux-gnu/codec.o output/pjmedia-x86_64-pc-linux-gnu/conference.o output/pjmedia-x86_64-pc-linux-gnu/conf_switch.o output/pjmedia-x86_64-pc-linux-gnu/converter.o output/pjmedia-x86_64-pc-linux-gnu/converter_libswscale.o output/pjmedia-x86_64-pc-linux-gnu/converter_libyuv.o output/pjmedia-x86_64-pc-linux-gnu/delaybuf.o output/pjmedia-x86_64-pc-linux-gnu/echo_common.o output/pjmedia-x86_64-pc-linux-gnu/echo_port.o output/pjmedia-x86_64-pc-linux-gnu/echo_suppress.o output/pjmedia-x86_64-pc-linux-gnu/endpoint.o output/pjmedia-x86_64-pc-linux-gnu/errno.o output/pjmedia-x86_64-pc-linux-gnu/event.o output/pjmedia-x86_64-pc-linux-gnu/format.o output/pjmedia-x86_64-pc-linux-gnu/ffmpeg_util.o output/pjmedia-x86_64-pc-linux-gnu/g711.o output/pjmedia-x86_64-pc-linux-gnu/jbuf.o output/pjmedia-x86_64-pc-linux-gnu/master_port.o output/pjmedia-x86_64-pc-linux-gnu/mem_capture.o output/pjmedia-x86_64-pc-linux-gnu/mem_player.o output/pjmedia-x86_64-pc-linux-gnu/null_port.o output/pjmedia-x86_64-pc-linux-gnu/plc_common.o output/pjmedia-x86_64-pc-linux-gnu/port.o output/pjmedia-x86_64-pc-linux-gnu/splitcomb.o output/pjmedia-x86_64-pc-linux-gnu/resample_resample.o output/pjmedia-x86_64-pc-linux-gnu/resample_libsamplerate.o output/pjmedia-x86_64-pc-linux-gnu/resample_speex.o output/pjmedia-x86_64-pc-linux-gnu/resample_port.o output/pjmedia-x86_64-pc-linux-gnu/rtcp.o output/pjmedia-x86_64-pc-linux-gnu/rtcp_xr.o output/pjmedia-x86_64-pc-linux-gnu/rtp.o output/pjmedia-x86_64-pc-linux-gnu/sdp.o output/pjmedia-x86_64-pc-linux-gnu/sdp_cmp.o output/pjmedia-x86_64-pc-linux-gnu/sdp_neg.o output/pjmedia-x86_64-pc-linux-gnu/session.o output/pjmedia-x86_64-pc-linux-gnu/silencedet.o output/pjmedia-x86_64-pc-linux-gnu/sound_legacy.o output/pjmedia-x86_64-pc-linux-gnu/sound_port.o output/pjmedia-x86_64-pc-linux-gnu/stereo_port.o output/pjmedia-x86_64-pc-linux-gnu/stream_common.o output/pjmedia-x86_64-pc-linux-gnu/stream.o output/pjmedia-x86_64-pc-linux-gnu/stream_info.o output/pjmedia-x86_64-pc-linux-gnu/tonegen.o output/pjmedia-x86_64-pc-linux-gnu/transport_adapter_sample.o output/pjmedia-x86_64-pc-linux-gnu/transport_ice.o output/pjmedia-x86_64-pc-linux-gnu/transport_loop.o output/pjmedia-x86_64-pc-linux-gnu/transport_srtp.o output/pjmedia-x86_64-pc-linux-gnu/transport_udp.o output/pjmedia-x86_64-pc-linux-gnu/types.o output/pjmedia-x86_64-pc-linux-gnu/vid_codec.o output/pjmedia-x86_64-pc-linux-gnu/vid_codec_util.o output/pjmedia-x86_64-pc-linux-gnu/vid_port.o output/pjmedia-x86_64-pc-linux-gnu/vid_stream.o output/pjmedia-x86_64-pc-linux-gnu/vid_stream_info.o output/pjmedia-x86_64-pc-linux-gnu/vid_tee.o output/pjmedia-x86_64-pc-linux-gnu/wav_player.o output/pjmedia-x86_64-pc-linux-gnu/wav_playlist.o output/pjmedia-x86_64-pc-linux-gnu/wav_writer.o output/pjmedia-x86_64-pc-linux-gnu/wave.o output/pjmedia-x86_64-pc-linux-gnu/wsola.o -lpj -lpjlib-util -lpjnath -lsrtp -lgsm -lspeex -lspeexdsp -lportaudio -Wl,-z,defs -Wl,--as-needed -Wl,-z,relro -lssl -lcrypto -luuid -lm -lrt -lpthread -lasound -L/usr/lib/x86_64-linux-gnu -lSDL2 -lavformat-ffmpeg -lavcodec-ffmpeg -lswscale-ffmpeg -lavutil-ffmpeg -lv4l2 -lopencore-amrnb -lopencore-amrwb -L/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjlib/lib -L/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjlib-util/lib -L/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjnath/lib -L/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/lib -L/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjsip/lib -L/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/third_party/lib -L/usr/lib/x86_64-linux-gnu -lSDL2 -lavformat-ffmpeg -lavcodec-ffmpeg -lswscale-ffmpeg -lavutil-ffmpeg -lv4l2 -L/usr/lib/x86_64-linux-gnu -lSDL2 -lavformat-ffmpeg -lavcodec-ffmpeg -lswscale-ffmpeg -lavutil-ffmpeg -lv4l2 -Wl,-z,defs -Wl,--as-needed -Wl,-z,relro -Wl,-z,defs -Wl,--as-needed -Wl,-z,relro -L/usr/lib/x86_64-linux-gnu -lSDL2 -lavformat-ffmpeg -lavcodec-ffmpeg -lswscale-ffmpeg -lavutil-ffmpeg -lv4l2 -shared -Wl,-soname,libpjmedia.so.2
output/pjmedia-x86_64-pc-linux-gnu/conference.o: In function create_sound_port': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/conference.c:499: undefined reference to
pjmedia_aud_stream_get_param'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/conference.c:505: undefined reference to pjmedia_aud_dev_get_info' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/conference.c:503: undefined reference to
pjmedia_aud_dev_get_info'
output/pjmedia-x86_64-pc-linux-gnu/endpoint.o: In function pjmedia_endpt_create': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/endpoint.c:137: undefined reference to
pjmedia_aud_subsys_init'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/endpoint.c:191: undefined reference to pjmedia_aud_subsys_shutdown' output/pjmedia-x86_64-pc-linux-gnu/endpoint.o: In function
pjmedia_endpt_destroy':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/endpoint.c:222: undefined reference to pjmedia_aud_subsys_shutdown' output/pjmedia-x86_64-pc-linux-gnu/sound_legacy.o: In function
open_stream':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_legacy.c:135: undefined reference to pjmedia_aud_dev_default_param' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_legacy.c:161: undefined reference to
pjmedia_aud_subsys_get_pool_factory'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_legacy.c:170: undefined reference to pjmedia_aud_stream_create' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_legacy.c:137: undefined reference to
pjmedia_aud_dev_default_param'
output/pjmedia-x86_64-pc-linux-gnu/sound_legacy.o: In function pjmedia_snd_get_dev_info': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_legacy.c:74: undefined reference to
pjmedia_aud_dev_get_info'
output/pjmedia-x86_64-pc-linux-gnu/sound_legacy.o: In function pjmedia_snd_stream_get_info': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_legacy.c:245: undefined reference to
pjmedia_aud_stream_get_param'
output/pjmedia-x86_64-pc-linux-gnu/sound_legacy.o: In function pjmedia_snd_stream_close': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_legacy.c:273: undefined reference to
pjmedia_aud_stream_destroy'
output/pjmedia-x86_64-pc-linux-gnu/sound_legacy.o: In function pjmedia_snd_init': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_legacy.c:54: undefined reference to
pjmedia_aud_subsys_init'
output/pjmedia-x86_64-pc-linux-gnu/sound_legacy.o: In function pjmedia_snd_deinit': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_legacy.c:59: undefined reference to
pjmedia_aud_subsys_shutdown'
output/pjmedia-x86_64-pc-linux-gnu/sound_legacy.o: In function pjmedia_snd_get_dev_count': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_legacy.c:64: undefined reference to
pjmedia_aud_dev_count'
output/pjmedia-x86_64-pc-linux-gnu/sound_legacy.o: In function pjmedia_snd_stream_start': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_legacy.c:231: undefined reference to
pjmedia_aud_stream_start'
output/pjmedia-x86_64-pc-linux-gnu/sound_legacy.o: In function pjmedia_snd_stream_stop': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_legacy.c:236: undefined reference to
pjmedia_aud_stream_stop'
output/pjmedia-x86_64-pc-linux-gnu/sound_port.o: In function stop_sound_device': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:347: undefined reference to
pjmedia_aud_stream_stop'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:348: undefined reference to pjmedia_aud_stream_destroy' output/pjmedia-x86_64-pc-linux-gnu/sound_port.o: In function
pjmedia_snd_port_set_ec':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:627: undefined reference to pjmedia_aud_stream_get_param' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:577: undefined reference to
pjmedia_aud_stream_get_cap'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:601: undefined reference to pjmedia_aud_stream_set_cap' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:608: undefined reference to
pjmedia_aud_stream_set_cap'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:589: undefined reference to pjmedia_aud_stream_set_cap' output/pjmedia-x86_64-pc-linux-gnu/sound_port.o: In function
start_sound_device':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:285: undefined reference to pjmedia_aud_stream_create' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:330: undefined reference to
pjmedia_aud_stream_destroy'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:327: undefined reference to pjmedia_aud_stream_start' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:246: undefined reference to
pjmedia_aud_dev_get_info'
output/pjmedia-x86_64-pc-linux-gnu/sound_port.o: In function pjmedia_snd_port_create': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:386: undefined reference to
pjmedia_aud_dev_default_param'
output/pjmedia-x86_64-pc-linux-gnu/sound_port.o: In function pjmedia_snd_port_create_rec': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:424: undefined reference to
pjmedia_aud_dev_default_param'
output/pjmedia-x86_64-pc-linux-gnu/sound_port.o: In function pjmedia_snd_port_create_player': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:462: undefined reference to
pjmedia_aud_dev_default_param'
output/pjmedia-x86_64-pc-linux-gnu/sound_port.o: In function pjmedia_snd_port_get_ec_tail': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:688: undefined reference to
pjmedia_aud_stream_get_cap'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:698: undefined reference to pjmedia_aud_stream_get_cap' output/pjmedia-x86_64-pc-linux-gnu/vid_port.o: In function
vid_pasv_port_get_frame':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:1302: undefined reference to pjmedia_vid_dev_stream_get_frame' output/pjmedia-x86_64-pc-linux-gnu/vid_port.o: In function
enc_clock_cb':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:1058: undefined reference to pjmedia_vid_dev_stream_get_frame' output/pjmedia-x86_64-pc-linux-gnu/vid_port.o: In function
client_port_event_cb':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:895: undefined reference to pjmedia_vid_dev_stream_get_param' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:937: undefined reference to
pjmedia_vid_dev_stream_stop'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:958: undefined reference to pjmedia_vid_dev_stream_set_cap' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:986: undefined reference to
pjmedia_vid_dev_stream_start'
output/pjmedia-x86_64-pc-linux-gnu/vid_port.o: In function dec_clock_cb': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:1100: undefined reference to
pjmedia_vid_dev_stream_put_frame'
output/pjmedia-x86_64-pc-linux-gnu/vid_port.o: In function vid_pasv_port_put_frame': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:1278: undefined reference to
pjmedia_vid_dev_stream_put_frame'
output/pjmedia-x86_64-pc-linux-gnu/vid_port.o: In function pjmedia_vid_port_start': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:773: undefined reference to
pjmedia_vid_dev_stream_start'
output/pjmedia-x86_64-pc-linux-gnu/vid_port.o: In function pjmedia_vid_port_destroy': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:822: undefined reference to
pjmedia_vid_dev_stream_destroy'
output/pjmedia-x86_64-pc-linux-gnu/vid_port.o: In function pjmedia_vid_port_create': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:519: undefined reference to
pjmedia_vid_dev_get_info'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:521: undefined reference to pjmedia_vid_dev_get_info' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:584: undefined reference to
pjmedia_vid_dev_stream_create'
output/pjmedia-x86_64-pc-linux-gnu/vid_port.o: In function pjmedia_vid_port_is_running': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:792: undefined reference to
pjmedia_vid_dev_stream_is_running'
output/pjmedia-x86_64-pc-linux-gnu/vid_port.o: In function pjmedia_vid_port_stop': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:805: undefined reference to
pjmedia_vid_dev_stream_stop'
collect2: error: ld returned 1 exit status
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/build/rules.mak:112: recipe for target '../lib/libpjmedia.so.2' failed
make[4]: *** [../lib/libpjmedia.so.2] Error 1
make[4]: Leaving directory '/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build'
Makefile:216: recipe for target 'libpjmedia.so' failed
make[3]: *** [libpjmedia.so] Error 2
make[3]: Leaving directory '/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build'
Makefile:14: recipe for target 'all' failed
make[2]: *** [all] Error 1
make[2]: Leaving directory '/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject'
dh_auto_build: make -j1 dep all returned exit code 2
debian/rules:44: recipe for target 'override_dh_auto_build' failed
make[1]: *** [override_dh_auto_build] Error 2
make[1]: Leaving directory '/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject'
debian/rules:17: recipe for target 'build' failed
make: *** [build] Error 2
--
Tzafrir Cohen
icq#16849755 jabber:tzafrir.cohen@xorcom.com
+972-50-7952406 mailto:tzafrir.cohen@xorcom.com
http://www.xorcom.com
Hi Tzafrir,
If the problem is that the libraries include too many run-time
dependencies, won't it be better to specifically disable these unwanted
dependencies instead? For example, by specifying --disable-video (or
disable-ffmpeg, disable-ssl, disable-v4l2, etc) and --disable-opencore.
Best regards,
Ming
On Sun, Dec 27, 2015 at 4:00 PM, Tzafrir Cohen tzafrir.cohen@xorcom.com
wrote:
Hi,
Short version: unless I made a mistake, I think that the shared
libraries pjmedia, pjmedia-audiodev and pjmedia-videodev should be
merged to a single shared library.
Long version:
I'm the maintainer of the pjproject (pjsip) packages for Debian[1].
Currently the package includes a single source package that builds
multiple binary packages, one per shared library, as per the Debian
Policy Manual[2].
One problem with the package is that the libraries include too many
run-time dependencies: I originally packaged it for Asterisk (which uses
pjsip and a few other componenets, but not pjmedia and such).
However the way the current build system works, all libraries are linked
with any library that is needed for any other library.
This is not an issue with static linking. But it is an issue with shared
libraries built in a generic configuration. Specifically, when I start
getting bug reports about Asterisk linking with -SDL[3].
Originally we tried to fix this by an increasingly intrusive set of
changes to the build system to avoid passing unneccesary build flags.
Current master has them[4]. But this didn't seem to be a useful
direction.
So I realised that what I needed was not linking libraries that are not
really needed. So what I really needed was linking with --as-needed[5].
This resulted in quite a few linking errors. Most were fixed by changes
to ldflags ordering[6].
Sadly I failed to make pjmedia and the rest of the pjmedia* libraries
link. It seems pjpedia needs symbols from pjmedia-audiodev and
pjmedia-videodev and vice-versa (See traces below). So I guess this
means the three libraries cannot be separated and need to be merged to a
single shared library.
[1] https://tracker.debian.org/pkg/pjproject
[2]
https://www.debian.org/doc/debian-policy/ch-sharedlibs.html#s-sharedlibs-runtime
[3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=795825
[6] Almost all of the following:
http://anonscm.debian.org/cgit/pkg-voip/pjproject.git/commit/?h=master-broken-2&id=09439f0f520ad37b90d2b5d0774e1fc68e9398f0
all besides the changes to pjmedia/build/Makefile, except the first
hunk that is included.
With pjmedia/build/Makefile changes removed:
---===========
...
ranlib ../lib/libpjmedia-videodev-x86_64-pc-linux-gnu.a
make[4]: Leaving directory
'/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build'
make -f
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/build/rules.mak
APP=PJMEDIA_VIDEODEV app=pjmedia-videodev ../lib/libpjmedia-videodev.so
make[4]: Entering directory
'/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build'
if test ! -d ../lib; then mkdir -p ../lib; fi
gcc -o ../lib/libpjmedia-videodev.so.2
output/pjmedia-videodev-x86_64-pc-linux-gnu/sdl_dev.o
output/pjmedia-videodev-x86_64-pc-linux-gnu/errno.o
output/pjmedia-videodev-x86_64-pc-linux-gnu/videodev.o
output/pjmedia-videodev-x86_64-pc-linux-gnu/avi_dev.o
output/pjmedia-videodev-x86_64-pc-linux-gnu/ffmpeg_dev.o
output/pjmedia-videodev-x86_64-pc-linux-gnu/colorbar_dev.o
output/pjmedia-videodev-x86_64-pc-linux-gnu/v4l2_dev.o
output/pjmedia-videodev-x86_64-pc-linux-gnu/opengl_dev.o
output/pjmedia-videodev-x86_64-pc-linux-gnu/util.o -lpj -lsrtp -lgsm
-lspeex -lspeexdsp -lportaudio -Wl,-z,defs -Wl,--as-needed -Wl,-z,relro
-lssl -lcrypto -luuid -lm -lrt -lpthread -lasound
-L/usr/lib/x86_64-linux-gnu -lSDL2 -lavformat-ffmpeg -lavcodec-ffmpeg
-lswscale-ffmpeg -lavutil-ffmpeg -lv4l2 -lopencore-amrnb -lopencore-amrwb
-L/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjlib/lib
-L/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjlib-util/lib
-L/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjnath/lib
-L/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/lib
-L/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjsip/lib
-L/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/third_party/lib
-L/usr/lib/x86_64-linux-gnu -lSDL2 -lavformat-ffmpeg -lavcodec-ffmpeg
-lswscale-ffmpeg -lavutil-ffmpeg -lv4l2 -L/usr/lib/x86_64-linux-gnu
-lSDL2 -lavformat-ffmpeg -lavcodec-ffmpeg -lswscale-ffmpeg -lavutil-ffmpeg
-lv4l2 -Wl,-z,defs -Wl,--as-needed -Wl,-z,relro -Wl,-z,defs
-Wl,--as-needed -Wl,-z,relro -L/usr/lib/x86_64-linux-gnu -lSDL2
-lavformat-ffmpeg -lavcodec-ffmpeg -lswscale-ffmpeg -lavutil-ffmpeg -lv4l2
-shared -Wl,-soname,libpjmedia-videodev.so.2
output/pjmedia-videodev-x86_64-pc-linux-gnu/sdl_dev.o: In function
find_stream': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/sdl_dev.c:322: undefined reference to
pjmedia_event_init'
output/pjmedia-videodev-x86_64-pc-linux-gnu/sdl_dev.o: In function
handle_event': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/sdl_dev.c:369: undefined reference to
pjmedia_event_publish'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/sdl_dev.c:389:
undefined reference to pjmedia_event_init' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/sdl_dev.c:391: undefined reference to
pjmedia_event_publish'
output/pjmedia-videodev-x86_64-pc-linux-gnu/sdl_dev.o: In function
sdl_create_rend': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/sdl_dev.c:685: undefined reference to
pjmedia_video_format_mgr_instance'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/sdl_dev.c:685:
undefined reference to pjmedia_get_video_format_info' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/sdl_dev.c:685: undefined reference to
pjmedia_video_format_mgr_instance'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/sdl_dev.c:685:
undefined reference to pjmedia_get_video_format_info' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/sdl_dev.c:695: undefined reference to
pjmedia_format_get_video_format_detail'
output/pjmedia-videodev-x86_64-pc-linux-gnu/sdl_dev.o: In function
change_format': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/sdl_dev.c:865: undefined reference to
pjmedia_format_copy'
output/pjmedia-videodev-x86_64-pc-linux-gnu/sdl_dev.o: In function
sdl_factory_init': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/sdl_dev.c:512: undefined reference to
pjmedia_format_init_video'
output/pjmedia-videodev-x86_64-pc-linux-gnu/avi_dev.o: In function
avi_dev_strm_get_frame': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:626: undefined reference to
pjmedia_port_get_frame'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:633:
undefined reference to pjmedia_port_get_frame' output/pjmedia-videodev-x86_64-pc-linux-gnu/avi_dev.o: In function
reset_dev_info':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:262:
undefined reference to pjmedia_avi_streams_get_num_streams' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:266: undefined reference to
pjmedia_avi_streams_get_stream'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:270:
undefined reference to pjmedia_port_destroy' output/pjmedia-videodev-x86_64-pc-linux-gnu/avi_dev.o: In function
avi_factory_create_stream':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:559:
undefined reference to pjmedia_format_copy' output/pjmedia-videodev-x86_64-pc-linux-gnu/avi_dev.o: In function
pjmedia_avi_dev_alloc':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:407:
undefined reference to pjmedia_avi_player_create_streams' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:413: undefined reference to
pjmedia_avi_streams_get_stream_by_media'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:422:
undefined reference to pjmedia_format_copy' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:423: undefined reference to
pjmedia_get_video_format_info'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:432:
undefined reference to pjmedia_vid_codec_mgr_get_codec_info2' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:438: undefined reference to
pjmedia_vid_codec_mgr_get_default_param'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:444:
undefined reference to pjmedia_vid_codec_mgr_alloc_codec' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:461: undefined reference to
pjmedia_get_video_format_info'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/avi_dev.c:497:
undefined reference to pjmedia_format_copy' output/pjmedia-videodev-x86_64-pc-linux-gnu/colorbar_dev.o: In function
cbar_factory_init':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/colorbar_dev.c:217:
undefined reference to pjmedia_format_init_video' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/colorbar_dev.c:237: undefined reference to
pjmedia_format_init_video'
output/pjmedia-videodev-x86_64-pc-linux-gnu/colorbar_dev.o: In function
cbar_stream_destroy': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/colorbar_dev.c:700: undefined reference to
pjmedia_clock_destroy'
output/pjmedia-videodev-x86_64-pc-linux-gnu/colorbar_dev.o: In function
cbar_factory_create_stream': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/colorbar_dev.c:449: undefined reference to
pjmedia_format_get_video_format_detail'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/colorbar_dev.c:450:
undefined reference to pjmedia_get_video_format_info' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/colorbar_dev.c:500: undefined reference to
pjmedia_clock_create2'
output/pjmedia-videodev-x86_64-pc-linux-gnu/colorbar_dev.o: In function
cbar_stream_stop': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/colorbar_dev.c:684: undefined reference to
pjmedia_clock_stop'
output/pjmedia-videodev-x86_64-pc-linux-gnu/colorbar_dev.o: In function
cbar_stream_start': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/colorbar_dev.c:671: undefined reference to
pjmedia_clock_start'
output/pjmedia-videodev-x86_64-pc-linux-gnu/v4l2_dev.o: In function
v4l2_get_supported_size': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/v4l2_dev.c:269: undefined reference to
pjmedia_format_init_video'
output/pjmedia-videodev-x86_64-pc-linux-gnu/v4l2_dev.o: In function
vid4lin_factory_create_stream': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/v4l2_dev.c:605: undefined reference to
pjmedia_get_video_format_info'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/v4l2_dev.c:610:
undefined reference to pjmedia_format_get_video_format_detail' output/pjmedia-videodev-x86_64-pc-linux-gnu/v4l2_dev.o: In function
vid4lin_stream_init_fmt':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/v4l2_dev.c:483:
undefined reference to pjmedia_format_get_video_format_detail' output/pjmedia-videodev-x86_64-pc-linux-gnu/v4l2_dev.o: In function
vid4lin_factory_default_param':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/v4l2_dev.c:469:
undefined reference to pjmedia_format_copy' output/pjmedia-videodev-x86_64-pc-linux-gnu/util.o: In function
pjmedia_vid_dev_conv_create_converter':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/util.c:72:
undefined reference to pjmedia_format_copy' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/util.c:73: undefined reference to
pjmedia_format_copy'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/util.c:74:
undefined reference to pjmedia_format_copy' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/util.c:155: undefined reference to
pjmedia_converter_create'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/util.c:72:
undefined reference to pjmedia_format_copy' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/util.c:73: undefined reference to
pjmedia_format_copy'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/util.c:74:
undefined reference to pjmedia_format_copy' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/util.c:162: undefined reference to
pjmedia_get_video_format_info'
output/pjmedia-videodev-x86_64-pc-linux-gnu/util.o: In function
pjmedia_vid_dev_conv_resize_and_rotate': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/util.c:236: undefined reference to
pjmedia_converter_convert'
output/pjmedia-videodev-x86_64-pc-linux-gnu/util.o: In function
pjmedia_vid_dev_conv_destroy_converter': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia-videodev/util.c:360: undefined reference to
pjmedia_converter_destroy'
collect2: error: ld returned 1 exit status
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/build/rules.mak:112:
recipe for target '../lib/libpjmedia-videodev.so.2' failed
make[4]: *** [../lib/libpjmedia-videodev.so.2] Error 1
make[4]: Leaving directory
'/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build'
Makefile:225: recipe for target 'libpjmedia-videodev.so' failed
make[3]: *** [libpjmedia-videodev.so] Error 2
make[3]: Leaving directory
'/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build'
Makefile:14: recipe for target 'all' failed
make[2]: *** [all] Error 1
make[2]: Leaving directory
'/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject'
dh_auto_build: make -j1 dep all returned exit code 2
debian/rules:44: recipe for target 'override_dh_auto_build' failed
make[1]: *** [override_dh_auto_build] Error 2
make[1]: Leaving directory
'/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject'
debian/rules:17: recipe for target 'build' failed
make: *** [build] Error 2
With pjmedia/build/Makefile changes applied:
---===========
....
ranlib ../lib/libpjmedia-x86_64-pc-linux-gnu.a
make[4]: Leaving directory
'/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build'
make -f
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/build/rules.mak
APP=PJMEDIA app=pjmedia ../lib/libpjmedia.so
make[4]: Entering directory
'/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build'
if test ! -d ../lib; then mkdir -p ../lib; fi
gcc -o ../lib/libpjmedia.so.2
output/pjmedia-x86_64-pc-linux-gnu/echo_speex.o
output/pjmedia-x86_64-pc-linux-gnu/alaw_ulaw.o
output/pjmedia-x86_64-pc-linux-gnu/alaw_ulaw_table.o
output/pjmedia-x86_64-pc-linux-gnu/avi_player.o
output/pjmedia-x86_64-pc-linux-gnu/bidirectional.o
output/pjmedia-x86_64-pc-linux-gnu/clock_thread.o
output/pjmedia-x86_64-pc-linux-gnu/codec.o
output/pjmedia-x86_64-pc-linux-gnu/conference.o
output/pjmedia-x86_64-pc-linux-gnu/conf_switch.o
output/pjmedia-x86_64-pc-linux-gnu/converter.o
output/pjmedia-x86_64-pc-linux-gnu/converter_libswscale.o
output/pjmedia-x86_64-pc-linux-gnu/converter_libyuv.o
output/pjmedia-x86_64-pc-linux-gnu/delaybuf.o
output/pjmedia-x86_64-pc-linux-gnu/echo_common.o
output/pjmedia-x86_64-pc-linux-gnu/echo_port.o
output/pjmedia-x86_64-pc-linux-gnu/echo_suppress.o
output/pjmedia-x86_64-pc-linux-gnu/endpoint.o
output/pjmedia-x86_64-pc-linux-gnu/errno.o
output/pjmedia-x86_64-pc-linux-gnu/event.o
output/pjmedia-x86_64-pc-linux-gnu/format.o
output/pjmedia-x86_64-pc-linux-gnu/ffmpeg_util.o
output/pjmedia-x86_64-pc-linux-gnu/g711.o
output/pjmedia-x86_64-pc-linux-gnu/jbuf.o
output/pjmedia-x86_64-pc-linux-gnu/master_port.o
output/pjmedia-x86_64-pc-linux-gnu/mem_capture.o
output/pjmedia-x86_64-pc-linux-gnu/mem_player.o
output/pjmedia-x86_64-pc-linux-gnu/null_port.o
output/pjmedia-x86_64-pc-linux-gnu/plc_common.o
output/pjmedia-x86_64-pc-linux-gnu/port.o
output/pjmedia-x86_64-pc-linux-gnu/splitcomb.o
output/pjmedia-x86_64-pc-linux-gnu/resample_resample.o
output/pjmedia-x86_64-pc-linux-gnu/resample_libsamplerate.o
output/pjmedia-x86_64-pc-linux-gnu/resample_speex.o
output/pjmedia-x86_64-pc-linux-gnu/resample_port.o
output/pjmedia-x86_64-pc-linux-gnu/rtcp.o
output/pjmedia-x86_64-pc-linux-gnu/rtcp_xr.o
output/pjmedia-x86_64-pc-linux-gnu/rtp.o
output/pjmedia-x86_64-pc-linux-gnu/sdp.o
output/pjmedia-x86_64-pc-linux-gnu/sdp_cmp.o
output/pjmedia-x86_64-pc-linux-gnu/sdp_neg.o
output/pjmedia-x86_64-pc-linux-gnu/session.o
output/pjmedia-x86_64-pc-linux-gnu/silencedet.o
output/pjmedia-x86_64-pc-linux-gnu/sound_legacy.o
output/pjmedia-x86_64-pc-linux-gnu/sound_port.o
output/pjmedia-x86_64-pc-linux-gnu/stereo_port.o
output/pjmedia-x86_64-pc-linux-gnu/stream_common.o
output/pjmedia-x86_64-pc-linux-gnu/stream.o
output/pjmedia-x86_64-pc-linux-gnu/stream_info.o
output/pjmedia-x86_64-pc-linux-gnu/tonegen.o
output/pjmedia-x86_64-pc-linux-gnu/transport_adapter_sample.o
output/pjmedia-x86_64-pc-linux-gnu/transport_ice.o
output/pjmedia-x86_64-pc-linux-gnu/transport_loop.o
output/pjmedia-x86_64-pc-linux-gnu/transport_srtp.o
output/pjmedia-x86_64-pc-linux-gnu/transport_udp.o
output/pjmedia-x86_64-pc-linux-gnu/types.o
output/pjmedia-x86_64-pc-linux-gnu/vid_codec.o
output/pjmedia-x86_64-pc-linux-gnu/vid_codec_util.o
output/pjmedia-x86_64-pc-linux-gnu/vid_port.o
output/pjmedia-x86_64-pc-linux-gnu/vid_stream.o
output/pjmedia-x86_64-pc-linux-gnu/vid_stream_info.o
output/pjmedia-x86_64-pc-linux-gnu/vid_tee.o
output/pjmedia-x86_64-pc-linux-gnu/wav_player.o
output/pjmedia-x86_64-pc-linux-gnu/wav_playlist.o
output/pjmedia-x86_64-pc-linux-gnu/wav_writer.o
output/pjmedia-x86_64-pc-linux-gnu/wave.o
output/pjmedia-x86_64-pc-linux-gnu/wsola.o -lpj -lpjlib-util -lpjnath
-lsrtp -lgsm -lspeex -lspeexdsp -lportaudio -Wl,-z,defs -Wl,--as-needed
-Wl,-z,relro -lssl -lcrypto -luuid -lm -lrt -lpthread -lasound
-L/usr/lib/x86_64-linux-gnu -lSDL2 -lavformat-ffmpeg -lavcodec-ffmpeg
-lswscale-ffmpeg -lavutil-ffmpeg -lv4l2 -lopencore-amrnb -lopencore-amrwb
-L/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjlib/lib
-L/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjlib-util/lib
-L/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjnath/lib
-L/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/lib
-L/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjsip/lib
-L/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/third_party/lib
-L/usr/lib/x86_64-linux-gnu -lSDL2 -lavformat-ffmpeg -lavcodec-ffmpeg
-lswscale-ffmpeg -lavutil-ffmpeg -lv4l2 -L/usr/lib/x86_64-linux-gnu
-lSDL2 -lavformat-ffmpeg -lavcodec-ffmpeg -lswscale-ffmpeg -lavutil-ffmpeg
-lv4l2 -Wl,-z,defs -Wl,--as-needed -Wl,-z,relro -Wl,-z,defs
-Wl,--as-needed -Wl,-z,relro -L/usr/lib/x86_64-linux-gnu -lSDL2
-lavformat-ffmpeg -lavcodec-ffmpeg -lswscale-ffmpeg -lavutil-ffmpeg -lv4l2
-shared -Wl,-soname,libpjmedia.so.2
output/pjmedia-x86_64-pc-linux-gnu/conference.o: In function
create_sound_port': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/conference.c:499: undefined reference to
pjmedia_aud_stream_get_param'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/conference.c:505:
undefined reference to pjmedia_aud_dev_get_info' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/conference.c:503: undefined reference to
pjmedia_aud_dev_get_info'
output/pjmedia-x86_64-pc-linux-gnu/endpoint.o: In function
pjmedia_endpt_create': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/endpoint.c:137: undefined reference to
pjmedia_aud_subsys_init'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/endpoint.c:191:
undefined reference to pjmedia_aud_subsys_shutdown' output/pjmedia-x86_64-pc-linux-gnu/endpoint.o: In function
pjmedia_endpt_destroy':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/endpoint.c:222:
undefined reference to pjmedia_aud_subsys_shutdown' output/pjmedia-x86_64-pc-linux-gnu/sound_legacy.o: In function
open_stream':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_legacy.c:135:
undefined reference to pjmedia_aud_dev_default_param' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_legacy.c:161: undefined reference to
pjmedia_aud_subsys_get_pool_factory'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_legacy.c:170:
undefined reference to pjmedia_aud_stream_create' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_legacy.c:137: undefined reference to
pjmedia_aud_dev_default_param'
output/pjmedia-x86_64-pc-linux-gnu/sound_legacy.o: In function
pjmedia_snd_get_dev_info': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_legacy.c:74: undefined reference to
pjmedia_aud_dev_get_info'
output/pjmedia-x86_64-pc-linux-gnu/sound_legacy.o: In function
pjmedia_snd_stream_get_info': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_legacy.c:245: undefined reference to
pjmedia_aud_stream_get_param'
output/pjmedia-x86_64-pc-linux-gnu/sound_legacy.o: In function
pjmedia_snd_stream_close': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_legacy.c:273: undefined reference to
pjmedia_aud_stream_destroy'
output/pjmedia-x86_64-pc-linux-gnu/sound_legacy.o: In function
pjmedia_snd_init': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_legacy.c:54: undefined reference to
pjmedia_aud_subsys_init'
output/pjmedia-x86_64-pc-linux-gnu/sound_legacy.o: In function
pjmedia_snd_deinit': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_legacy.c:59: undefined reference to
pjmedia_aud_subsys_shutdown'
output/pjmedia-x86_64-pc-linux-gnu/sound_legacy.o: In function
pjmedia_snd_get_dev_count': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_legacy.c:64: undefined reference to
pjmedia_aud_dev_count'
output/pjmedia-x86_64-pc-linux-gnu/sound_legacy.o: In function
pjmedia_snd_stream_start': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_legacy.c:231: undefined reference to
pjmedia_aud_stream_start'
output/pjmedia-x86_64-pc-linux-gnu/sound_legacy.o: In function
pjmedia_snd_stream_stop': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_legacy.c:236: undefined reference to
pjmedia_aud_stream_stop'
output/pjmedia-x86_64-pc-linux-gnu/sound_port.o: In function
stop_sound_device': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:347: undefined reference to
pjmedia_aud_stream_stop'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:348:
undefined reference to pjmedia_aud_stream_destroy' output/pjmedia-x86_64-pc-linux-gnu/sound_port.o: In function
pjmedia_snd_port_set_ec':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:627:
undefined reference to pjmedia_aud_stream_get_param' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:577: undefined reference to
pjmedia_aud_stream_get_cap'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:601:
undefined reference to pjmedia_aud_stream_set_cap' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:608: undefined reference to
pjmedia_aud_stream_set_cap'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:589:
undefined reference to pjmedia_aud_stream_set_cap' output/pjmedia-x86_64-pc-linux-gnu/sound_port.o: In function
start_sound_device':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:285:
undefined reference to pjmedia_aud_stream_create' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:330: undefined reference to
pjmedia_aud_stream_destroy'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:327:
undefined reference to pjmedia_aud_stream_start' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:246: undefined reference to
pjmedia_aud_dev_get_info'
output/pjmedia-x86_64-pc-linux-gnu/sound_port.o: In function
pjmedia_snd_port_create': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:386: undefined reference to
pjmedia_aud_dev_default_param'
output/pjmedia-x86_64-pc-linux-gnu/sound_port.o: In function
pjmedia_snd_port_create_rec': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:424: undefined reference to
pjmedia_aud_dev_default_param'
output/pjmedia-x86_64-pc-linux-gnu/sound_port.o: In function
pjmedia_snd_port_create_player': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:462: undefined reference to
pjmedia_aud_dev_default_param'
output/pjmedia-x86_64-pc-linux-gnu/sound_port.o: In function
pjmedia_snd_port_get_ec_tail': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:688: undefined reference to
pjmedia_aud_stream_get_cap'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/sound_port.c:698:
undefined reference to pjmedia_aud_stream_get_cap' output/pjmedia-x86_64-pc-linux-gnu/vid_port.o: In function
vid_pasv_port_get_frame':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:1302:
undefined reference to pjmedia_vid_dev_stream_get_frame' output/pjmedia-x86_64-pc-linux-gnu/vid_port.o: In function
enc_clock_cb':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:1058:
undefined reference to pjmedia_vid_dev_stream_get_frame' output/pjmedia-x86_64-pc-linux-gnu/vid_port.o: In function
client_port_event_cb':
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:895:
undefined reference to pjmedia_vid_dev_stream_get_param' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:937: undefined reference to
pjmedia_vid_dev_stream_stop'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:958:
undefined reference to pjmedia_vid_dev_stream_set_cap' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:986: undefined reference to
pjmedia_vid_dev_stream_start'
output/pjmedia-x86_64-pc-linux-gnu/vid_port.o: In function dec_clock_cb': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:1100: undefined reference to
pjmedia_vid_dev_stream_put_frame'
output/pjmedia-x86_64-pc-linux-gnu/vid_port.o: In function
vid_pasv_port_put_frame': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:1278: undefined reference to
pjmedia_vid_dev_stream_put_frame'
output/pjmedia-x86_64-pc-linux-gnu/vid_port.o: In function
pjmedia_vid_port_start': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:773: undefined reference to
pjmedia_vid_dev_stream_start'
output/pjmedia-x86_64-pc-linux-gnu/vid_port.o: In function
pjmedia_vid_port_destroy': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:822: undefined reference to
pjmedia_vid_dev_stream_destroy'
output/pjmedia-x86_64-pc-linux-gnu/vid_port.o: In function
pjmedia_vid_port_create': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:519: undefined reference to
pjmedia_vid_dev_get_info'
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:521:
undefined reference to pjmedia_vid_dev_get_info' /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:584: undefined reference to
pjmedia_vid_dev_stream_create'
output/pjmedia-x86_64-pc-linux-gnu/vid_port.o: In function
pjmedia_vid_port_is_running': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:792: undefined reference to
pjmedia_vid_dev_stream_is_running'
output/pjmedia-x86_64-pc-linux-gnu/vid_port.o: In function
pjmedia_vid_port_stop': /home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build/../src/pjmedia/vid_port.c:805: undefined reference to
pjmedia_vid_dev_stream_stop'
collect2: error: ld returned 1 exit status
/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/build/rules.mak:112:
recipe for target '../lib/libpjmedia.so.2' failed
make[4]: *** [../lib/libpjmedia.so.2] Error 1
make[4]: Leaving directory
'/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build'
Makefile:216: recipe for target 'libpjmedia.so' failed
make[3]: *** [libpjmedia.so] Error 2
make[3]: Leaving directory
'/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build'
Makefile:14: recipe for target 'all' failed
make[2]: *** [all] Error 1
make[2]: Leaving directory
'/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject'
dh_auto_build: make -j1 dep all returned exit code 2
debian/rules:44: recipe for target 'override_dh_auto_build' failed
make[1]: *** [override_dh_auto_build] Error 2
make[1]: Leaving directory
'/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject'
debian/rules:17: recipe for target 'build' failed
make: *** [build] Error 2
--
Tzafrir Cohen
icq#16849755 jabber:tzafrir.cohen@xorcom.com
+972-50-7952406 mailto:tzafrir.cohen@xorcom.com
http://www.xorcom.com
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
On Tue, Dec 29, 2015 at 11:13:32AM +0800, Ming wrote:
Hi Tzafrir,
If the problem is that the libraries include too many run-time
dependencies, won't it be better to specifically disable these unwanted
dependencies instead? For example, by specifying --disable-video (or
disable-ffmpeg, disable-ssl, disable-v4l2, etc) and --disable-opencore.
As I mentioned, this is a generic build. For instance, I want to use it
for both Asterisk and sflphone.
--
Tzafrir Cohen
icq#16849755 jabber:tzafrir.cohen@xorcom.com
+972-50-7952406 mailto:tzafrir.cohen@xorcom.com
http://www.xorcom.com
On Sun, Dec 27, 2015 at 10:00:31AM +0200, Tzafrir Cohen wrote:
Sadly I failed to make pjmedia and the rest of the pjmedia* libraries
link. It seems pjpedia needs symbols from pjmedia-audiodev and
pjmedia-videodev and vice-versa (See traces below). So I guess this
means the three libraries cannot be separated and need to be merged to a
single shared library.
I decided that this is the way to go. While playing with the build
system to implement this (and naturally, breaking stuff as I go along),
I noticed that I got a broken .depends file. Here is a short partial
snippet:
if eval $dep | sed '/^#/d' >> .pjmedia-x86_64-pc-linux-gnu.depend; then \
true; \
else \
echo 'err:' >> .pjmedia-x86_64-pc-linux-gnu.depend; \
rm -f .pjmedia-x86_64-pc-linux-gnu.depend; \
exit 1; \
fi; \
fi;
done;
../src/pjmedia/videodev_util.c:20:18: fatal error: util.h: No such file or direc
tory
compilation terminated.
[ And much later on ]
make[4]: Entering directory '/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjproject/pjmedia/build'
.pjmedia-x86_64-pc-linux-gnu.depend:4807: *** missing separator (did you mean TAB instead of 8 spaces?). Stop.
make[4]: Leaving directory '/home/tzafrir/Proj/Alioth/pkg-voip-git/pjproject/pjp
As you can see, the if statement fails to test the eval. Rather, it
tests the sed statement. This is in the depend: target in
build/rules.mak.
I'll now go back to breaking stuff in my private copy.
--
Tzafrir Cohen
icq#16849755 jabber:tzafrir.cohen@xorcom.com
+972-50-7952406 mailto:tzafrir.cohen@xorcom.com
http://www.xorcom.com
On Sun, Dec 27, 2015 at 10:00:31AM +0200, Tzafrir Cohen wrote:
Sadly I failed to make pjmedia and the rest of the pjmedia* libraries
link. It seems pjpedia needs symbols from pjmedia-audiodev and
pjmedia-videodev and vice-versa (See traces below). So I guess this
means the three libraries cannot be separated and need to be merged to a
single shared library.
I now have a rough copy of the changes.
http://anonscm.debian.org/cgit/pkg-voip/pjproject.git/log/?h=master-mergelibs
This is a branch with a messed history that includes those changes, but
the tree (and specifically debian/patches and debian/rules) should be
OK.
I added an extra patch to remove -lpjmedia-audiodev and
-lpjmedia-videodev and disable building them.
I wanted to avoid a big intrusive renaming patch, and thus I "copied"
them into pjmedia/src/pjmedia/ using symlinks (adding a prefix to the .c
files to avoid collision of errno.c).
This symlinking is not done in a patch. Rather, it is done in the build
rules, in debian/rules.
Any comments?
--
Tzafrir Cohen
icq#16849755 jabber:tzafrir.cohen@xorcom.com
+972-50-7952406 mailto:tzafrir.cohen@xorcom.com
http://www.xorcom.com
Hi Tzafrir,
I am afraid that we can't proceed the proposal of merging pjmedia
modules at least for now. It seems to introduce quite major changes for
allowing '--as-needed' linker option while there are already options in
configure scripts to strip the unnecessary dependency libs (which is
originally introduced by the configure script itself).
BR,
nanang
On Thu, Dec 31, 2015 at 9:30 PM, Tzafrir Cohen tzafrir.cohen@xorcom.com
wrote:
On Sun, Dec 27, 2015 at 10:00:31AM +0200, Tzafrir Cohen wrote:
Sadly I failed to make pjmedia and the rest of the pjmedia* libraries
link. It seems pjpedia needs symbols from pjmedia-audiodev and
pjmedia-videodev and vice-versa (See traces below). So I guess this
means the three libraries cannot be separated and need to be merged to a
single shared library.
I now have a rough copy of the changes.
http://anonscm.debian.org/cgit/pkg-voip/pjproject.git/log/?h=master-mergelibs
This is a branch with a messed history that includes those changes, but
the tree (and specifically debian/patches and debian/rules) should be
OK.
I added an extra patch to remove -lpjmedia-audiodev and
-lpjmedia-videodev and disable building them.
I wanted to avoid a big intrusive renaming patch, and thus I "copied"
them into pjmedia/src/pjmedia/ using symlinks (adding a prefix to the .c
files to avoid collision of errno.c).
This symlinking is not done in a patch. Rather, it is done in the build
rules, in debian/rules.
Any comments?
--
Tzafrir Cohen
icq#16849755 jabber:tzafrir.cohen@xorcom.com
+972-50-7952406 mailto:tzafrir.cohen@xorcom.com
http://www.xorcom.com
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Hi Tzafrir,
We decide to remove circular deps of pjmedia* libraries in ticket #1907 (
https://trac.pjsip.org/repos/ticket/1907). Although this does not directly
solve the original problem of too many runtime dependencies, hopefully it
can give more flexibility towards what you can do. Please let us know if
you have any feedbacks or suggestions. Thanks.
Best regards,
Ming
On Mon, Jan 11, 2016 at 11:24 AM, Nanang Izzuddin nanang@pjsip.org wrote:
Hi Tzafrir,
I am afraid that we can't proceed the proposal of merging pjmedia
modules at least for now. It seems to introduce quite major changes for
allowing '--as-needed' linker option while there are already options in
configure scripts to strip the unnecessary dependency libs (which is
originally introduced by the configure script itself).
BR,
nanang
On Thu, Dec 31, 2015 at 9:30 PM, Tzafrir Cohen tzafrir.cohen@xorcom.com
wrote:
On Sun, Dec 27, 2015 at 10:00:31AM +0200, Tzafrir Cohen wrote:
Sadly I failed to make pjmedia and the rest of the pjmedia* libraries
link. It seems pjpedia needs symbols from pjmedia-audiodev and
pjmedia-videodev and vice-versa (See traces below). So I guess this
means the three libraries cannot be separated and need to be merged to a
single shared library.
I now have a rough copy of the changes.
http://anonscm.debian.org/cgit/pkg-voip/pjproject.git/log/?h=master-mergelibs
This is a branch with a messed history that includes those changes, but
the tree (and specifically debian/patches and debian/rules) should be
OK.
I added an extra patch to remove -lpjmedia-audiodev and
-lpjmedia-videodev and disable building them.
I wanted to avoid a big intrusive renaming patch, and thus I "copied"
them into pjmedia/src/pjmedia/ using symlinks (adding a prefix to the .c
files to avoid collision of errno.c).
This symlinking is not done in a patch. Rather, it is done in the build
rules, in debian/rules.
Any comments?
--
Tzafrir Cohen
icq#16849755 jabber:tzafrir.cohen@xorcom.com
+972-50-7952406 mailto:tzafrir.cohen@xorcom.com
http://www.xorcom.com
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org