Summary:ASTERISK-04826: ooH323 from asterisk-addons compile broken on x86_64
Reporter:Brian Fertig (docelm0)Labels:
Date Opened:2005-08-12 10:51:29Date Closed:2011-06-07 14:02:54
Versions:Frequency of
Description:H323 will not compile from HEAD to x86_64 platform.  I am including my output from trying to compile it.

I have tried a few things to get it to work but nothing successful.


/bin/sh ../libtool --mode=link gcc  -DGNU -D_GNU_SOURCE -D_OOINFO -D_REENTRANT -D_COMPACT   -o libchan_h323.la -rpath /usr/local/lib -L../ooh323c/src -version-info 1:1:0 chan_h323.lo ooh323cDriver.lo -lpthread -looh323c
rm -fr .libs/libchan_h323.la .libs/libchan_h323.* .libs/libchan_h323.*
gcc -shared  chan_h323.lo ooh323cDriver.lo  -L/usr/src/asterisk-addons/asterisk-ooh323c/ooh323c/src -lpthread -looh323c  -Wl,-soname -Wl,libchan_h323.so.1 -o .libs/libchan_h323.so.1.0.1
/usr/bin/ld: /usr/src/asterisk-addons/asterisk-ooh323c/ooh323c/src/libooh323c.a(ooGkClient.o): relocation R_X86_64_32 against `gH323ep' can not be used when making a shared object; recompile with -fPIC
/usr/src/asterisk-addons/asterisk-ooh323c/ooh323c/src/libooh323c.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: *** [libchan_h323.la] Error 1
make[2]: Leaving directory `/usr/src/asterisk-addons/asterisk-ooh323c/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/src/asterisk-addons/asterisk-ooh323c'
make: *** [all] Error 2
Comments:By: Michael Jerris (mikej) 2005-08-12 13:06:43

as noted on the -dev list, recompile with -fPIC.  If that works, a patch to the makefile would be appretiated.

By: Brian Fertig (docelm0) 2005-08-12 13:46:13

Well I had tried that.   This is what I get.

[root@pt-aus-gw1 src]# gcc -fPIC  chan_h323.lo ooh323cDriver.lo  -L/usr/src/asterisk-addons/asterisk-ooh323c/ooh323c/src -lpthread -looh323c  -Wl,-soname -Wl,libchan_h323.so.1 -o .libs/libchan_h323.so.1.0.1
/usr/lib/gcc/x86_64-redhat-linux/3.4.2/../../../../lib64/crt1.o(.text+0x21): In function `_start':
: undefined reference to `main'
chan_h323.lo(.text+0x54): In function `h323_new':
: undefined reference to `ast_log'
chan_h323.lo(.text+0x67): In function `h323_new':
: undefined reference to `ast_channel_alloc'
chan_h323.lo(.text+0xec): In function `h323_new':
: undefined reference to `ast_best_codec'
chan_h323.lo(.text+0x10f): In function `h323_new':
: undefined reference to `ast_rtp_fd'

My environment is:

FC3 x86_64
Dual Opteron 248

By: Michael Jerris (mikej) 2005-08-12 16:52:46

Try updating again from cvs.  Updates were made to the build on this.

By: Brian Fertig (docelm0) 2005-08-12 20:52:25

Install goes well now.  But I have searched the directories and cant find the .so file.  Any ideas?   I am not trying to be a pain in the ass but I know very little about ANSI C on linux and am learning.  But I need a little help here and there.   This is what I found now.  

gcc -shared  chan_h323.lo ooh323cDriver.lo  -L/usr/src/asterisk-addons/asterisk-ooh323c/ooh323c/src -lpthread -looh323c  -Wl,-soname -Wl,libchan_h323.1 -o .libs/libchan_h323.1.0.1
(cd .libs && rm -f libchan_h323.1 && ln -s libchan_h323.1.0.1 libchan_h323.1)
(cd .libs && rm -f libchan_h323 && ln -s libchan_h323.1.0.1 libchan_h323)
ar cru .libs/libchan_h323.a  chan_h323.o ooh323cDriver.o
ranlib .libs/libchan_h323.a
creating libchan_h323.la
(cd .libs && rm -f libchan_h323.la && ln -s ../libchan_h323.la libchan_h323.la)
make[2]: Leaving directory `/usr/src/asterisk-addons/asterisk-ooh323c/src'
make[1]: Leaving directory `/usr/src/asterisk-addons/asterisk-ooh323c'
[root@pt-aus-gw1 asterisk-ooh323c]# make install

make[3]: Leaving directory `/usr/src/asterisk-addons/asterisk-ooh323c/ooh323c/tests/chansetup'
make[2]: Leaving directory `/usr/src/asterisk-addons/asterisk-ooh323c/ooh323c/tests'
make[1]: Leaving directory `/usr/src/asterisk-addons/asterisk-ooh323c/ooh323c'
Making install in src
make[1]: Entering directory `/usr/src/asterisk-addons/asterisk-ooh323c/src'
cp .libs/libchan_h323.so /usr/lib/asterisk/modules/chan_h323.so
cp: cannot stat `.libs/libchan_h323.so': No such file or directory
make[1]: *** [install] Error 1
make[1]: Leaving directory `/usr/src/asterisk-addons/asterisk-ooh323c/src'
make: *** [install-recursive] Error 1
[root@pt-aus-gw1 asterisk-ooh323c]#

By: Michael Jerris (mikej) 2005-08-17 08:40:31

Can you please take a look at this

By: Vishal Phirke (vphirke) 2005-08-19 12:24:16

Are you sure your build didn't create .so file. Can you check in the astersik-ooh323c/src/.libs directory and see what you got. Unfortunately I can't reproduce this bug.

By: Michael Jerris (mikej) 2005-08-19 16:06:17

just watched the new build commits to cvs.  Is there any way for that to determine the asterisk config and modules dir instead of them being hardcoded?

By: Michael Jerris (mikej) 2005-08-22 20:32:53

issue suspended due to no resoponse.  Please try to update to most recent cvs head, and if you continue to have problems, please re-open this bug with requested details.  Thanks.