Summary: | ASTERISK-15938: missing libs in link command of chan_h323.so: module fails to load | ||
Reporter: | Tzafrir Cohen (tzafrir) | Labels: | |
Date Opened: | 2010-04-10 11:58:33 | Date Closed: | 2011-06-07 14:00:49 |
Priority: | Major | Regression? | No |
Status: | Closed/Complete | Components: | Channels/chan_h323 |
Versions: | Frequency of Occurrence | ||
Related Issues: | |||
Environment: | Attachments: | ||
Description: | It used to be that when building with chan_h323 enabled, asterisk would fail the build after generating channels/h323/Makefile.ast . Now it doesn't. However values from it don't seem to be used when linking channels/chan_h323.so . $ make clean $ make NOISY_BUILD=1 ... gcc -o chan_gtalk.o -c chan_gtalk.c -MD -MT chan_gtalk.o -MF .chan_gtalk.o.d -MP -pthread -I/home/tzafrir/Proj/Asterisk/Git/asterisk/include -I/usr/include/libxml2 -pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -g3 -march=k8 -O0 -fPIC -DAST_MODULE=\"chan_gtalk\" gcc -o chan_gtalk.so -pthread -shared chan_gtalk.o -liksemel -lssl -lcrypto gcc -o chan_h323.o -c chan_h323.c -MD -MT chan_h323.o -MF .chan_h323.o.d -MP -pthread -I/home/tzafrir/Proj/Asterisk/Git/asterisk/include -I/usr/include/libxml2 -pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -g3 -march=k8 -O0 -fPIC -DAST_MODULE=\"chan_h323\" make -C h323 Makefile.ast make[2]: Entering directory `/home/tzafrir/Proj/Asterisk/Git/asterisk/channels/h323' g++ -DNDEBUG -I../../include -include ../../include/asterisk/autoconfig.h -fPIC -D_REENTRANT -Wall -DP_64BIT -fPIC -DPIC -I/usr/share/pwlib//include -DPTRACING -I/usr/share/openh323/include -M ast_h323.cxx >> *.dep make[2]: Leaving directory `/home/tzafrir/Proj/Asterisk/Git/asterisk/channels/h323' make[2]: Entering directory `/home/tzafrir/Proj/Asterisk/Git/asterisk/channels/h323' make[2]: Leaving directory `/home/tzafrir/Proj/Asterisk/Git/asterisk/channels/h323' make -C h323 libchanh323.a make[2]: Entering directory `/home/tzafrir/Proj/Asterisk/Git/asterisk/channels/h323' g++ -DNDEBUG -I../../include -include ../../include/asterisk/autoconfig.h -fPIC -D_REENTRANT -Wall -DP_64BIT -fPIC -DPIC -I/usr/share/pwlib//include -DPTRACING -I/usr/share/openh323/include -O2 -pipe -c ast_h323.cxx -o ast_h323.o g++ -DNDEBUG -I../../include -include ../../include/asterisk/autoconfig.h -fPIC -D_REENTRANT -Wall -DP_64BIT -fPIC -DPIC -I/usr/share/pwlib//include -DPTRACING -I/usr/share/openh323/include -O2 -pipe -c compat_h323.cxx -o compat_h323.o g++ -DNDEBUG -I../../include -include ../../include/asterisk/autoconfig.h -fPIC -D_REENTRANT -Wall -DP_64BIT -fPIC -DPIC -I/usr/share/pwlib//include -DPTRACING -I/usr/share/openh323/include -O2 -pipe -c cisco-h225.cxx -o cisco-h225.o g++ -DNDEBUG -I../../include -include ../../include/asterisk/autoconfig.h -fPIC -D_REENTRANT -Wall -DP_64BIT -fPIC -DPIC -I/usr/share/pwlib//include -DPTRACING -I/usr/share/openh323/include -O2 -pipe -c caps_h323.cxx -o caps_h323.o ar crv libchanh323.a ./ast_h323.o ./compat_h323.o ./cisco-h225.o ./caps_h323.o a - ./ast_h323.o a - ./compat_h323.o a - ./cisco-h225.o a - ./caps_h323.o make[2]: Leaving directory `/home/tzafrir/Proj/Asterisk/Git/asterisk/channels/h323' g++ -pthread -shared -o chan_h323.so chan_h323.o h323/libchanh323.a ... $ ldd channels/chan_h323.so linux-vdso.so.1 => (0x00007fffc9bff000) libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f32f9a65000) libm.so.6 => /lib/libm.so.6 (0x00007f32f97e3000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f32f95cc000) libpthread.so.0 => /lib/libpthread.so.0 (0x00007f32f93b0000) libc.so.6 => /lib/libc.so.6 (0x00007f32f905c000) /lib64/ld-linux-x86-64.so.2 (0x00007f32fa015000) If I try to load that module it would fail, due to missing symbols that appear to come from openh323. Now let's rebuild: $ rm channels/chan_h323.so $ make NOISY_BUILD=1 ... make[1]: Entering directory `/home/tzafrir/Proj/Asterisk/Git/asterisk/channels' g++ -pthread -shared -o chan_h323.so chan_h323.o h323/libchanh323.a -lopenh323 -lresolv -lpt -lldap -llber -lldap_r -lpthread -lsasl2 -lssl -lcrypto -lexpat -lresolv -ldl make[1]: Leaving directory `/home/tzafrir/Proj/Asterisk/Git/asterisk/channels' ... $ ldd channels/chan_h323.so linux-vdso.so.1 => (0x00007fffad5ff000) libopenh323.so.1.18.0 => /usr/lib/libopenh323.so.1.18.0 (0x00007f5d2d492000) libresolv.so.2 => /lib/libresolv.so.2 (0x00007f5d2d27c000) libpt.so.1.10.10 => /usr/lib/libpt.so.1.10.10 (0x00007f5d2cc7f000) libldap_r-2.4.so.2 => /usr/lib/libldap_r-2.4.so.2 (0x00007f5d2ca34000) liblber-2.4.so.2 => /usr/lib/liblber-2.4.so.2 (0x00007f5d2c825000) libpthread.so.0 => /lib/libpthread.so.0 (0x00007f5d2c608000) libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0x00007f5d2c3ef000) libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8 (0x00007f5d2c19a000) libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0x00007f5d2bdf9000) libexpat.so.1 => /usr/lib/libexpat.so.1 (0x00007f5d2bbd1000) libdl.so.2 => /lib/libdl.so.2 (0x00007f5d2b9cd000) libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f5d2b6bc000) libm.so.6 => /lib/libm.so.6 (0x00007f5d2b43a000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f5d2b224000) libc.so.6 => /lib/libc.so.6 (0x00007f5d2aecf000) libgnutls.so.26 => /usr/lib/libgnutls.so.26 (0x00007f5d2ac2c000) /lib64/ld-linux-x86-64.so.2 (0x00007f5d2e189000) libz.so.1 => /usr/lib/libz.so.1 (0x00007f5d2aa14000) libtasn1.so.3 => /usr/lib/libtasn1.so.3 (0x00007f5d2a804000) libgcrypt.so.11 => /usr/lib/libgcrypt.so.11 (0x00007f5d2a58b000) libgpg-error.so.0 => /usr/lib/libgpg-error.so.0 (0x00007f5d2a388000) That looks more like bad old chan_h323. Now, rebuild, but also remove channels/h323/Makefile.ast: $ rm channels/chan_h323.so channels/h323/Makefile.ast $ make NOISY_BUILD=1 ... make[1]: Entering directory `/home/tzafrir/Proj/Asterisk/Git/asterisk/channels' g++ -pthread -shared -o chan_h323.so chan_h323.o h323/libchanh323.a make[1]: Leaving directory `/home/tzafrir/Proj/Asterisk/Git/asterisk/channels' $ ldd channels/chan_h323.so linux-vdso.so.1 => (0x00007fffdc3ff000) libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f4750a6e000) libm.so.6 => /lib/libm.so.6 (0x00007f47507ec000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f47505d5000) libpthread.so.0 => /lib/libpthread.so.0 (0x00007f47503b9000) libc.so.6 => /lib/libc.so.6 (0x00007f4750065000) /lib64/ld-linux-x86-64.so.2 (0x00007f475101e000) $ ls channels/h323/Makefile.ast ls: cannot access channels/h323/Makefile.ast: No such file or directory As a temporary workaround, I included a simple patch to the main makefile to allow me to cleanly generate channels/h323/Makefile.ast | ||
Comments: | By: Leif Madsen (lmadsen) 2010-04-12 10:14:43 Just curious if you were planning on attaching that simple patch here? Thanks! By: Leif Madsen (lmadsen) 2010-04-19 15:05:28 Since you have access to the code base, and the interest in this channel driver is minor, I'd suggest you just resolve the issue as you see fit. By: Private Name (falves11) 2010-06-15 15:04:03 I think that for many people h323 is business-critical. Can somebody post the patch or simply update the make file so chan_h323 compiles in 1.6.2X? By: Leif Madsen (lmadsen) 2010-06-23 13:59:44 If it was business critical for *many* people, then we would see significantly more developers and reporters for that channel driver. By: Leif Madsen (lmadsen) 2010-07-27 13:32:33 I'm suspending this issue for now. If the reporter or anyone else would like to move this issue forward they are welcome to reopen it. Thanks! |