I’m attempting to build pjsip 2.7.2 with video enabled for an embedded application. When attempting to build, I always end up with linker errors when pj attempts to build the video tests files. The build environment I’m using is buildroot
on Fedora 27. I have a full build log that I can post if needed.
For reference, here is my config:
./configure --target=arm-buildroot-linux-gnueabihf --host=arm-buildroot-linux-gnueabihf --build=x86_64-pc-linux-gnu --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc
--localstatedir=/var --program-prefix="" --disable-gtk-doc --disable-gtk-doc-html --disable-doc --disable-docs --disable-documentation --with-xmlto=no --with-fop=no --disable-dependency-tracking --enable-ipv6 --enable-nls --disable-static --enable-shared
--disable-ipp --disable-silk --with-external-srtp --enable-gpl --enable-libx264 --enable-video --with-sdl=/home/linuxbuild/build/ecos_init/ecos/output/root/host/arm-buildroot-linux-gnueabihf/sysroot/usr --with-openh264=/home/linuxbuild/build/ecos_init/ecos/output/root/host/arm-buildroot-linux-gnueabihf/sysroot/usr
--enable-epoll --with-ssl --disable-oss --with-ffmpeg=/home/linuxbuild/build/ecos_init/ecos/output/root/host/arm-buildroot-linux-gnueabihf/sysroot/usr --with-bcg729=/home/linuxbuild/build/ecos_init/ecos/output/root/host/arm-buildroot-linux-gnueabihf/sysroot/usr
--with-external-gsm --disable-opencore-amr --with-external-speex
Build failure:
…
if test ! -d ../bin; then mkdir -p ../bin; fi
/home/linuxbuild/build/ecos_init/ecos/output/root/host/bin/arm-linux-gcc -o ../bin/pjmedia-test-arm-buildroot-linux-gnueabihf \
output/pjmedia-test-arm-buildroot-linux-gnueabihf/codec_vectors.o output/pjmedia-test-arm-buildroot-linux-gnueabihf/jbuf_test.o output/pjmedia-test-arm-buildroot-linux-gnueabihf/main.o output/pjmedia-test-arm-buildroot-linux-gnueabihf/mips_test.o output/pjmedia-test-arm-buildroot-linux-gnueabihf/vid_codec_test.o
output/pjmedia-test-arm-buildroot-linux-gnueabihf/vid_dev_test.o output/pjmedia-test-arm-buildroot-linux-gnueabihf/vid_port_test.o output/pjmedia-test-arm-buildroot-linux-gnueabihf/rtp_test.o output/pjmedia-test-arm-buildroot-linux-gnueabihf/test.o output/pjmedia-test-arm-buildroot-linux-gnueabihf/sdp_neg_test.o
-lpjmedia-codec -lpjmedia-videodev -lpjmedia-audiodev -lpjmedia -lpjnath -lpjlib-util -lpj -lresample -lilbccodec -lg7221codec -lyuv -lwebrtc -lsrtp -lgsm -lspeex -lspeexdsp -L/home/linuxbuild/build/ecos_init/ecos/output/root/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib
-L/home/linuxbuild/build/ecos_init/ecos/output/root/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib -Lyes/lib -lbcg729 -lopus -lssl -lcrypto -lopenh264 -lstdc++ -luuid -lm -lrt -lpthread -lasound -L/home/linuxbuild/build/ecos_init/ecos/output/root/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr/lib
-lavdevice -lavformat -lavcodec -lavutil -lv4l2 -L/home/linuxbuild/build/ecos_init/ecos/output/root/build/libpjsip-2.7.2/pjlib/lib -L/home/linuxbuild/build/ecos_init/ecos/output/root/build/libpjsip-2.7.2/pjlib-util/lib -L/home/linuxbuild/build/ecos_init/ecos/output/root/build/libpjsip-2.7.2/pjnath/lib
-L/home/linuxbuild/build/ecos_init/ecos/output/root/build/libpjsip-2.7.2/pjmedia/lib -L/home/linuxbuild/build/ecos_init/ecos/output/root/build/libpjsip-2.7.2/pjsip/lib -L/home/linuxbuild/build/ecos_init/ecos/output/root/build/libpjsip-2.7.2/third_party/lib
-L/home/linuxbuild/build/ecos_init/ecos/output/root/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr/lib -lavdevice -lavformat -lavcodec -lavutil -lv4l2 -L/home/linuxbuild/build/ecos_init/ecos/output/root/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib
-lopenh264 -lstdc++ -L/home/linuxbuild/build/ecos_init/ecos/output/root/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr/lib -lavdevice -lavformat -lavcodec -lavutil -lv4l2 -L/home/linuxbuild/build/ecos_init/ecos/output/root/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib
-lopenh264 -lstdc++ -L/home/linuxbuild/build/ecos_init/ecos/output/root/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib -L/home/linuxbuild/build/ecos_init/ecos/output/root/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib -Lyes/lib -L/home/linuxbuild/build/ecos_init/ecos/output/root/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr/lib
-lavdevice -lavformat -lavcodec -lavutil -lv4l2 -L/home/linuxbuild/build/ecos_init/ecos/output/root/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib -lopenh264 -lstdc++
output/pjmedia-test-arm-buildroot-linux-gnueabihf/vid_codec_test.o: In function `codec_on_event.part.0':
vid_codec_test.c:(.text+0x2c): undefined reference to `pjmedia_vid_port_get_stream'
vid_codec_test.c:(.text+0x38): undefined reference to `pjmedia_vid_dev_stream_set_cap'
output/pjmedia-test-arm-buildroot-linux-gnueabihf/vid_codec_test.o: In function `codec_put_frame':
vid_codec_test.c:(.text+0x148): undefined reference to `pjmedia_vid_port_get_passive_port'
output/pjmedia-test-arm-buildroot-linux-gnueabihf/vid_codec_test.o: In function `enum_codecs':
vid_codec_test.c:(.text+0x224): undefined reference to `pjmedia_vid_codec_mgr_enum_codecs'
output/pjmedia-test-arm-buildroot-linux-gnueabihf/vid_codec_test.o: In function `encode_decode_test':
vid_codec_test.c:(.text+0x3d8): undefined reference to `pjmedia_vid_codec_mgr_find_codecs_by_id'
vid_codec_test.c:(.text+0x3fc): undefined reference to `pjmedia_vid_dev_lookup'
vid_codec_test.c:(.text+0x41c): undefined reference to `pjmedia_vid_dev_lookup'
vid_codec_test.c:(.text+0x454): undefined reference to `pjmedia_vid_codec_mgr_find_codecs_by_id'
vid_codec_test.c:(.text+0x46c): undefined reference to `pjmedia_vid_codec_mgr_get_default_param'
vid_codec_test.c:(.text+0x48c): undefined reference to `pjmedia_vid_codec_mgr_alloc_codec'
vid_codec_test.c:(.text+0x514): undefined reference to `pjmedia_vid_port_param_default'
vid_codec_test.c:(.text+0x524): undefined reference to `pjmedia_vid_dev_default_param'
vid_codec_test.c:(.text+0x578): undefined reference to `pjmedia_format_get_video_format_detail'
vid_codec_test.c:(.text+0x594): undefined reference to `pjmedia_vid_port_create'
vid_codec_test.c:(.text+0x5cc): undefined reference to `pjmedia_vid_port_create'
vid_codec_test.c:(.text+0x668): undefined reference to `pjmedia_vid_port_connect'
vid_codec_test.c:(.text+0x6e0): undefined reference to `pjmedia_vid_port_start'
vid_codec_test.c:(.text+0x6f0): undefined reference to `pjmedia_vid_port_start'
vid_codec_test.c:(.text+0x714): undefined reference to `pjmedia_vid_port_stop'
vid_codec_test.c:(.text+0x724): undefined reference to `pjmedia_vid_port_stop'
vid_codec_test.c:(.text+0x734): undefined reference to `pjmedia_vid_port_destroy'
vid_codec_test.c:(.text+0x744): undefined reference to `pjmedia_vid_port_destroy'
vid_codec_test.c:(.text+0x780): undefined reference to `pjmedia_vid_codec_mgr_dealloc_codec'
output/pjmedia-test-arm-buildroot-linux-gnueabihf/vid_codec_test.o: In function `vid_codec_test':
vid_codec_test.c:(.text+0x894): undefined reference to `pjmedia_vid_dev_subsys_init'
vid_codec_test.c:(.text+0x8a8): undefined reference to `pjmedia_codec_openh264_vid_init'
vid_codec_test.c:(.text+0x8bc): undefined reference to `pjmedia_codec_ffmpeg_vid_init'
vid_codec_test.c:(.text+0x944): undefined reference to `pjmedia_codec_ffmpeg_vid_deinit'
vid_codec_test.c:(.text+0x948): undefined reference to `pjmedia_codec_openh264_vid_deinit'
vid_codec_test.c:(.text+0x94c): undefined reference to `pjmedia_vid_dev_subsys_shutdown'
output/pjmedia-test-arm-buildroot-linux-gnueabihf/vid_dev_test.o: In function `enum_devs':
vid_dev_test.c:(.text+0x64): undefined reference to `pjmedia_vid_dev_count'
vid_dev_test.c:(.text+0x9c): undefined reference to `pjmedia_vid_dev_get_info'
vid_dev_test.c:(.text+0x15c): undefined reference to `pjmedia_get_video_format_info'
output/pjmedia-test-arm-buildroot-linux-gnueabihf/vid_dev_test.o: In function `loopback_test':
vid_dev_test.c:(.text+0x248): undefined reference to `pjmedia_vid_dev_count'
vid_dev_test.c:(.text+0x27c): undefined reference to `pjmedia_vid_dev_get_info'
vid_dev_test.c:(.text+0x2dc): undefined reference to `pjmedia_vid_dev_get_info'
vid_dev_test.c:(.text+0x330): undefined reference to `pjmedia_format_init_video'
vid_dev_test.c:(.text+0x370): undefined reference to `pjmedia_vid_dev_get_info'
vid_dev_test.c:(.text+0x38c): undefined reference to `pjmedia_vid_dev_get_info'
vid_dev_test.c:(.text+0x3ac): undefined reference to `pjmedia_get_video_format_info'
vid_dev_test.c:(.text+0x418): undefined reference to `pjmedia_vid_port_param_default'
vid_dev_test.c:(.text+0x428): undefined reference to `pjmedia_vid_dev_default_param'
vid_dev_test.c:(.text+0x490): undefined reference to `pjmedia_format_get_video_format_detail'
vid_dev_test.c:(.text+0x4b0): undefined reference to `pjmedia_vid_port_create'
vid_dev_test.c:(.text+0x4c8): undefined reference to `pjmedia_vid_dev_default_param'
vid_dev_test.c:(.text+0x51c): undefined reference to `pjmedia_vid_port_create'
vid_dev_test.c:(.text+0x544): undefined reference to `pjmedia_vid_port_get_passive_port'
vid_dev_test.c:(.text+0x554): undefined reference to `pjmedia_vid_port_connect'
vid_dev_test.c:(.text+0x564): undefined reference to `pjmedia_vid_port_start'
vid_dev_test.c:(.text+0x574): undefined reference to `pjmedia_vid_port_start'
vid_dev_test.c:(.text+0x5b4): undefined reference to `pjmedia_vid_port_stop'
vid_dev_test.c:(.text+0x5c4): undefined reference to `pjmedia_vid_port_stop'
vid_dev_test.c:(.text+0x5d4): undefined reference to `pjmedia_vid_port_destroy'
vid_dev_test.c:(.text+0x5fc): undefined reference to `pjmedia_vid_port_destroy'
output/pjmedia-test-arm-buildroot-linux-gnueabihf/vid_dev_test.o: In function `vid_dev_test':
vid_dev_test.c:(.text+0x6a4): undefined reference to `pjmedia_vid_dev_subsys_init'
vid_dev_test.c:(.text+0x6c8): undefined reference to `pjmedia_vid_dev_subsys_shutdown'
output/pjmedia-test-arm-buildroot-linux-gnueabihf/vid_port_test.o: In function `find_device':
vid_port_test.c:(.text+0x44): undefined reference to `pjmedia_vid_dev_count'
vid_port_test.c:(.text+0x64): undefined reference to `pjmedia_vid_dev_get_info'
output/pjmedia-test-arm-buildroot-linux-gnueabihf/vid_port_test.o: In function `capture_render_loopback':
vid_port_test.c:(.text+0x10c): undefined reference to `pjmedia_vid_dev_get_info'
vid_port_test.c:(.text+0x128): undefined reference to `pjmedia_vid_dev_get_info'
vid_port_test.c:(.text+0x148): undefined reference to `pjmedia_get_video_format_info'
vid_port_test.c:(.text+0x1b0): undefined reference to `pjmedia_vid_port_param_default'
vid_port_test.c:(.text+0x1c0): undefined reference to `pjmedia_vid_dev_default_param'
vid_port_test.c:(.text+0x224): undefined reference to `pjmedia_format_get_video_format_detail'
vid_port_test.c:(.text+0x240): undefined reference to `pjmedia_vid_port_create'
vid_port_test.c:(.text+0x258): undefined reference to `pjmedia_vid_dev_default_param'
vid_port_test.c:(.text+0x2b4): undefined reference to `pjmedia_vid_port_create'
vid_port_test.c:(.text+0x2f0): undefined reference to `pjmedia_vid_port_get_passive_port'
vid_port_test.c:(.text+0x300): undefined reference to `pjmedia_vid_port_connect'
vid_port_test.c:(.text+0x310): undefined reference to `pjmedia_vid_port_start'
vid_port_test.c:(.text+0x320): undefined reference to `pjmedia_vid_port_start'
vid_port_test.c:(.text+0x364): undefined reference to `pjmedia_vid_port_stop'
vid_port_test.c:(.text+0x374): undefined reference to `pjmedia_vid_port_stop'
vid_port_test.c:(.text+0x384): undefined reference to `pjmedia_vid_port_destroy'
vid_port_test.c:(.text+0x3ac): undefined reference to `pjmedia_vid_port_destroy'
output/pjmedia-test-arm-buildroot-linux-gnueabihf/vid_port_test.o: In function `vid_port_test':
vid_port_test.c:(.text+0x45c): undefined reference to `pjmedia_vid_dev_subsys_init'
vid_port_test.c:(.text+0x4e4): undefined reference to `pjmedia_vid_dev_subsys_shutdown'
vid_port_test.c:(.text+0x5d8): undefined reference to `pjmedia_format_init_video'
output/pjmedia-test-arm-buildroot-linux-gnueabihf/test.o: In function `test_main':
test.c:(.text+0xe0): undefined reference to `pjmedia_video_format_mgr_create'
test.c:(.text+0x108): undefined reference to `pjmedia_vid_codec_mgr_create'
test.c:(.text+0x4b4): undefined reference to `pjmedia_video_format_mgr_instance'
test.c:(.text+0x4b8): undefined reference to `pjmedia_video_format_mgr_destroy'
test.c:(.text+0x4cc): undefined reference to `pjmedia_vid_codec_mgr_instance'
test.c:(.text+0x4d0): undefined reference to `pjmedia_vid_codec_mgr_destroy'
collect2: error: ld returned 1 exit status
make[5]: *** [/home/linuxbuild/build/ecos_init/ecos/output/root/build/libpjsip-2.7.2/build/rules.mak:125: ../bin/pjmedia-test-arm-buildroot-linux-gnueabihf] Error 1
make[4]: *** [Makefile:243: pjmedia-test-arm-buildroot-linux-gnueabihf] Error 2
make[3]: *** [Makefile:14: all] Error 1
make[2]: *** [package/pkg-generic.mk:224: /home/linuxbuild/build/ecos_init/ecos/output/root/build/libpjsip-2.7.2/.stamp_built] Error 2
Taylor Prins
Senior Embedded Software Engineer | Code Blue Corporation
tprins@xxxxxxxxxxxx |
www.codeblue.com
o: 616-355-8482 | f: 616-392-8391
Follow us on Social Media:
Facebook |
Twitter |
LinkedIn |
YouTube