[Asterisk-Users] asterisk + chan_mISDN =
undefined symbol: ast_pickup_call
Christian Wengel
wengel at coxorange.net
Tue Aug 16 00:19:19 MST 2005
Hi!
I tried install-misdn.tgz from http://www.beronet.com/download/ , some
minutes ago. Also I switched to an older kernel (2.6.8), but I get the
same error.
I think that I made the correct changes in the Makefiles, but I will
attach them to this e-mail, maybe you see something wrong.
Greets, Christian
Johann Steinwendtner schrieb:
> This error would occur if you compile chan_misdn against Asterisk
> stable and not specifying it in the makefile of chan_misdn.
> Check the makefile of chan_misdn.
>
> Hans
>
> Christian Wengel schrieb:
>
>> Hi all!
>>
>> I'm getting an error when I try to start asterisk with chan_misdn.
>> I patched my kernel (2.6.12.4), and compiled the whole stuff (kernel,
>> mISDNuser, asterisk, chan_misdn). I got mISDN from
>> http://isdn.jolly.de/download/v3.0/
>> I'm using a CVS Snapshot of asterisk, which was checked out about 5
>> hours ago.
>> This is the error:
>>
>> [chan_misdn.so]Aug 15 14:13:29 WARNING[4929]: loader.c:314
>> __load_resource: /usr/lib/asterisk/modules/chan_misdn.so: undefined
>> symbol: ast_pickup_call
>> Aug 15 14:13:29 WARNING[4929]: loader.c:488 load_modules: Loading
>> module chan_misdn.so failed!
>>
>> I have no idea where to start solving this problem. Has anybody a
>> hint for me?
>> If you need more information, feel free to ask for it.
>>
>> Greets, Christian
>> _______________________________________________
>> Asterisk-Users mailing list
>> Asterisk-Users at lists.digium.com
>> http://lists.digium.com/mailman/listinfo/asterisk-users
>> To UNSUBSCRIBE or update options visit:
>> http://lists.digium.com/mailman/listinfo/asterisk-users
>>
>>
>>
>
>
>
> _______________________________________________
> Asterisk-Users mailing list
> Asterisk-Users at lists.digium.com
> http://lists.digium.com/mailman/listinfo/asterisk-users
> To UNSUBSCRIBE or update options visit:
> http://lists.digium.com/mailman/listinfo/asterisk-users
>
-------------- next part --------------
#touched_by_crich
CFLAGS+=-I/usr/src/install-misdn/mISDNuser/include -I/usr/src/install-misdn/mISDN/include -I/usr/src/install-misdn/mISDNuser/i4lnet/
CFLAGS+=$(EXTRA_CFLAGS)
#
# The following line tells the makefile where to install the module,
# if necessary, please edit it
#
INSTALL_MODPATH=/usr/lib/asterisk/modules
#
# The following line tells the makefile where to find the asterisk src, so
# please edit this one if necessary
#
ASTERISKSRC=../../asterisk
#
# The following line tells the makefile where to put in the configfile
# of this module
#
AST_CONFIG_DIR=/etc/asterisk/
#
# The Includes are Set appropriatly
#
ASTERISKINC=$(ASTERISKSRC)/include
#
# mISDNuser PATHS
#
#MISDNUSER=/usr/src/install-misdn/mISDNuser
MISDNUSER=/usr/src/install-misdn/mISDNuser
MISDNUSERINC=$(MISDNUSER)/include
MISDNUSERLIB=$(MISDNUSER)/lib
#
# mISDNuser Version
#
# If you dont use the Jolly mISDNuser version above 2.7 then comment this
#
CFLAGS+=-DMISDNUSER_JOLLY
#
# ASTERISK Version
# If you are using a asterisk version above from stable (v1-0)
# then comment the following line out (good luck)
#
#CFLAGS+=-DASTERISK_STABLE
#CFLAGS+=-DUSE_ZT_EC
#LINUXROOT=/usr/src/linux-2.6
LINUXROOT=/lib/modules/$(shell uname -r)/build
#
# Wether to use asterisk dsp for dtmf tone detection
#
#CFLAGS+=-DMISDN_CHECK_DTMFS
#
# Linux Includes (must be patched with mISDN!)
#
LINUXINC=$(LINUXROOT)/include
#
# chan_misdn_version
#
CFLAGS+=-DCHAN_MISDN_VERSION=\"$(shell cat VERSION)\"
#CFLAGS+=-DCHAN_MISDN_VERSION=\"AsteriskVersion\"
CFLAGS+=-ggdb -Wall -D_GNU_SOURCE
CFLAGS+=-Wno-missing-prototypes -Wno-missing-declarations
CFLAGS+=-I$(MISDNUSERINC) -I$(MISDNUSER)/i4lnet/ -I$(LINUXINC)
CFLAGS+=-fPIC -I$(ASTERISKINC) -DAST_CONFIG_DIR=\"$(AST_CONFIG_DIR)\" -I$(MISDNUSERINC) -I$(MISDNUSER)/i4lnet/ -Wall
MISDNOBJS=chan_misdn.o isdn_lib.o ec.o isdn_msg_parser.o
#config.o
ADDOBJS+=$(MISDNUSER)/i4lnet/libisdnnet.a $(MISDNUSER)/lib/libmISDN.a
all: chan_misdn.so app_v110.so app_ptyfork.so app_waitfordigits.so
$(ADDOBJS):
@if [ ! -f $(MISDNUSER)/i4lnet/libisdnnet.a -o ! -f $(MISDNUSER)/lib/libmISDN.a ] ; then echo -e "\nYou need mISDNuser to compile chan_misdn!\nPlease read the README\nOr just type: make misdn_install\n" ; exit 1; fi
chan_misdn.so: $(ADDOBJS) $(MISDNOBJS)
$(CC) -shared -Xlinker -x -o $@ $(MISDNOBJS) $(ADDOBJS)
testphone: testphone.c
$(CC) -I$(MISDNUSERINC) -I$(MISDNUSER)/i4lnet/ testphone.c $(MISDNUSERLIB)/libmISDN.a -o testphone
#-I$(LINUXINC)
install: chan_misdn.so app_v110.so app_ptyfork.so app_waitfordigits.so
install -m 644 chan_misdn.so $(INSTALL_MODPATH)/
install -m 644 app_v110.so $(INSTALL_MODPATH)/
install -m 644 app_ptyfork.so $(INSTALL_MODPATH)/
install -m 644 app_waitfordigits.so $(INSTALL_MODPATH)/
if [ ! -f $(AST_CONFIG_DIR)/misdn.conf ] ; then cp misdn.conf $(AST_CONFIG_DIR)/; fi
if [ ! -e /dev/mISDN ] ; then mknod /dev/mISDN c 46 0; fi
@echo
@echo INSTALLATION SUCCEEDED
app_v110.so: app_v110.o
$(CC) -shared -Xlinker -x -o $@ app_v110.o
app_ptyfork.so: app_ptyfork.o
$(CC) -shared -Xlinker -x -o $@ app_ptyfork.o
app_waitfordigits.so: app_waitfordigits.o
$(CC) -shared -Xlinker -x -o $@ app_waitfordigits.o
isdn_msg_parser.o: isdn_msg_parser.c
$(CC) $(CFLAGS) -c isdn_msg_parser.c
isdn_lib.o: isdn_lib.c isdn_lib.h
$(CC) $(CFLAGS) -c isdn_lib.c
ec.o: ec.c
$(CC) $(CFLAGS) -ggdb -c ec.c
config.o: config.c
$(CC) $(CFLAGS) -c config.c
te_test.o: te_test.c
$(CC) $(CFLAGS) -c te_test.c
te_test: te_lib.o te_test.o
$(CC) $(CFLAGS) te_lib.o te_test.o $(MISDNUSERLIB)/libmISDN.a $(MISDNUSER)/i4lnet/libisdnnet.a -lpthread -o te_test
portinfo: portinfo.c
$(CC) $(CFLAGS) portinfo.c -ggdb $(MISDNUSERLIB)/libmISDN.a -o portinfo
clean:
rm -rf *.o *.so *~ te_test core.* portinfo app_v110.so app_ptyfork.so app_waitfordigits.so
snapshot:
DIR=chan_misdn-$$(date +"%d_%m_%y") ; \
echo $$(date +"%d_%m_%y" | sed -e "s/\//_/g") > VERSION ; \
mkdir -p /tmp/$$DIR ; \
cp * /tmp/$$DIR ; \
cd /tmp/; \
tar czf $$DIR.tgz $$DIR
misdn:
mkdir -p lib
make -f Makefile.misdn
misdn_install:
mkdir -p lib
make -f Makefile.misdn install
misdn_clean:
rm -rf lib
.PHONEY: clean snapshot misdn misdn_install misdn_clean
-------------- next part --------------
BASEDIR=$(shell pwd)
########################################
# USER CONFIGS
########################################
#PATH to linux source/headers
#LINUX=/usr/src/linux
LINUX=/lib/modules/$(shell uname -r)/build
#Extra flags for chan_misdn (wether we use asterisk STABLE or not)
#EXTRAFLAGS=-DASTERISK_STABLE
#where to find actual things (mISDN, andmISDNuser, also chan_misdn)
HTTP_MISDN_SRC=http://isdn.jolly.de/download/v3.0
MISDN_TGZ=mISDN_for_PBX4Linux-3.0.tar.gz
MISDNUSER_TGZ=mISDNuser_for_PBX4Linux-3.0.tar.gz
# Here you could set a release for example
HTTP_CHAN_MISDN_SRC=http://www.beronet.com/download/daily-snapshots
CHAN_MISDN_TGZ=chan_misdn-11_08_05.tgz
#HTTP_CHAN_MISDN_SRC=http://www.beronet.com/download/
#CHAN_MISDN_TGZ=chan_misdn-beta-0.1.0.tgz
########################################
# USER CONFIGS END
########################################
#Internals
MISDNDIR=$(BASEDIR)/mISDN
#MISDNDIR=/usr/src/mISDN
MISDNUSERDIR=$(BASEDIR)/mISDNuser
CHAN_MISDNDIR=$(BASEDIR)/$(shell basename $(CHAN_MISDN_TGZ) .tgz)
MISDN_SRC=$(MISDNDIR)/drivers/isdn/hardware/mISDN
MISDN_INC=$(MISDNDIR)/include
EXTRAFLAGS+=-DMISDNUSER_JOLLY
#EXTRAFLAGS+=$(shell sh config.sh ast_stable )
#EXTRA_CONFIGS=$(shell cat $(LINUX)/.config | sed -e "s/\#//g" )
CONFIGS=CONFIG_MISDN_DRV=m CONFIG_MISDN_DSP=y CONFIG_MISDN_HFCPCI=y CONFIG_MISDN_AVM_FRITZ=y CONFIG_MISDN_HFCMULTI=y CONFIG_MISDN_HFCUSB=y $(EXTRA_CONFIGS)
MOD_SUFFIX=ko
MISDN_MODS=$(MISDN_SRC)/avmfritz.$(MOD_SUFFIX) $(MISDN_SRC)/hfcmulti.$(MOD_SUFFIX) $(MISDN_SRC)/hfcpci.$(MOD_SUFFIX) $(MISDN_SRC)/l3udss1.$(MOD_SUFFIX) $(MISDN_SRC)/mISDN_capi.$(MOD_SUFFIX) $(MISDN_SRC)/mISDN_core.$(MOD_SUFFIX) $(MISDN_SRC)/mISDN_dsp.$(MOD_SUFFIX) $(MISDN_SRC)/mISDN_dtmf.$(MOD_SUFFIX) $(MISDN_SRC)/mISDN_isac.$(MOD_SUFFIX) $(MISDN_SRC)/mISDN_l1.$(MOD_SUFFIX) $(MISDN_SRC)/mISDN_l2.$(MOD_SUFFIX) $(MISDN_SRC)/mISDN_x25dte.$(MOD_SUFFIX) #$(MISDN_SRC)/hfcsusb.$(MOD_SUFFIX)
MISDNUSER_LIBS=$(MISDNUSERDIR)/libmISDN.a $(MISDNUSERDIR)/libisdnnet.a
all: test_preempt $(CHAN_MISDNDIR)/chan_misdn.so
$(CHAN_MISDNDIR)/chan_misdn.so: $(CHAN_MISDNDIR) MISDN_MAKE_MODS $(MISDNUSER_LIBS)
#
# Make the chan_misdn stuff
#
echo "Makeing chan_misdn"
if ! grep touched_by_crich $(CHAN_MISDNDIR)/Makefile ; then \
echo "#touched_by_crich" > $(CHAN_MISDNDIR)/tmpMakefile; \
echo "CFLAGS+=-I$(MISDNUSERDIR)/include -I$(MISDN_INC) -I$(MISDNUSERDIR)/i4lnet/" >> $(CHAN_MISDNDIR)/tmpMakefile; \
cat $(CHAN_MISDNDIR)/Makefile >> $(CHAN_MISDNDIR)/tmpMakefile; \
mv $(CHAN_MISDNDIR)/tmpMakefile $(CHAN_MISDNDIR)/Makefile; \
sed -i -e "s at MISDNUSER=.*@MISDNUSER=$(MISDNUSERDIR)@" $(CHAN_MISDNDIR)/Makefile; \
fi
cd $(CHAN_MISDNDIR); make EXTRA_CFLAGS="-I$(MISDNUSERDIR)/include -I$(MISDN_INC) -I$(MISDNUSERDIR)/i4lnet/ $(EXTRAFLAGS)" MISDNUSER=$(MISDNUSERDIR)
#$(MISDN_MODS): $(MISDNDIR)
MISDN_MAKE_MODS: $(MISDNDIR)
#
# Make The mISDN stuff
#
echo "Makeing mISDN"
echo "CFLAGS+=\$$(STANDALONE_CFLAGS)" > $(MISDN_SRC)/Makefile
if ! diff $(MISDNDIR)/include/linux/mISDNif.h $(LINUX)/include/linux/mISDNif.h > /dev/null 2>/dev/null ; then cp $(MISDNDIR)/include/linux/mISDNif.h $(LINUX)/include/linux/mISDNif.h ; fi
if ! diff $(MISDNDIR)/include/linux/isdn_compat.h $(LINUX)/include/linux/isdn_compat.h >/dev/null 2>/dev/null ; then cp $(MISDNDIR)/include/linux/isdn_compat.h $(LINUX)/include/linux/isdn_compat.h ; fi
cat $(MISDN_SRC)/Makefile.v2.6 >> $(MISDN_SRC)/Makefile
cd $(LINUX) ; make SUBDIRS=$(MISDN_SRC) modules $(CONFIGS) STANDALONE_CFLAGS="-I$(MISDN_INC)"
$(MISDNUSER_LIBS): $(MISDNUSERDIR)
#
# Make the mISDNuser stuff
#
echo "Makeing mISDNuser"
if ! grep touched_by_crich $(MISDNUSERDIR)/Makefile ; then \
sed -i -e "s at export CFLAGS at CFLAGS+=-I$(MISDN_INC)\nexport CFLAGS\n#touched_by_crich@" $(MISDNUSERDIR)/Makefile ; \
fi
cd $(MISDNUSERDIR); make
$(MISDN_TGZ):
if [ ! -d $(MISDNDIR) ] ; then wget $(HTTP_MISDN_SRC)/$(MISDN_TGZ); fi
$(MISDNUSER_TGZ):
if [ ! -d $(MISDNUSERDIR) ] ; then wget $(HTTP_MISDN_SRC)/$(MISDNUSER_TGZ); fi
$(CHAN_MISDN_TGZ):
if [ ! -d $(CHAN_MISDNDIR) ] ; then wget $(HTTP_CHAN_MISDN_SRC)/$(CHAN_MISDN_TGZ); fi
$(MISDNDIR): $(MISDN_TGZ)
if [ ! -d $(MISDNDIR) ] ; then tar xzf $(MISDN_TGZ) ; fi
$(MISDNUSERDIR): $(MISDNUSER_TGZ)
if [ ! -d $(MISDNUSERDIR) ] ; then tar xzf $(MISDNUSER_TGZ); fi
$(CHAN_MISDNDIR): $(CHAN_MISDN_TGZ)
if [ ! -d $(CHAN_MISDNDIR) ] ; then tar xzf $(CHAN_MISDN_TGZ); fi
MODPATH=/lib/modules/$(shell uname -r)/kernel/drivers/isdn/hardware/mISDN/
install: all
if [ ! -d $(MODPATH) ] ; then \
mkdir -p $(MODPATH) ; \
fi
cp $(MISDN_MODS) $(MODPATH)
depmod
cd $(CHAN_MISDNDIR); make install
snapshot:
rm -rf /tmp/install-misdn
mkdir /tmp/install-misdn
cp Makefile README config.sh /tmp/install-misdn/
cd /tmp ; tar czf install-misdn.tgz install-misdn
test_preempt:
@if grep 'CONFIG_PREEMPT=y' $(LINUX)/.config ; then \
echo -e "\n\n!!!!!!!!!!!!!!!!!!!!!!!!!!\nDisable the PREEMPTIBLE Setting in your Kernel Config. To go on press enter.\n\n" ;\
read ; \
fi
@if grep 'CONFIG_SMP=y' $(LINUX)/.config ; then \
echo -e "\n\n!!!!!!!!!!!!!!!!!!!!!!!!!!\nDisable the SMP Setting in your Kernel Config. To go on press enter.\n\n" ; \
read ; \
fi
.PHONY: install all snapshot test_preempt
More information about the asterisk-users
mailing list