[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