problem linking auth module to freeradius functions
Hi, I'm developing an auth module based on eap outside of the FreeRADIUS environment and I'm having some problems linking freeRadius functions to my module ! this is the output of gcc : gcc -g -o rlm_eap_xxx-1.1.3.so -DNDEBUG -Wall -I/tmp/freeradius-1.1.3/src/include -I/tmp/freeradius-1.1.3/src/modules/rlm_eap -I/tmp/freeradius-1.1.3/src/modules/rlm_eap/libeap -I/tmp/freeradius-1.1.3/src/lib -I/home/ns/rlm_eap_xxx -I/usr/local/include -I/usr/local/lib -I/usr/include -L/tmp/freeradius-1.1.3/src/lib -L/usr/local/lib -lgcrypt -L/usr/local/lib -lgpg-error rlm_eap_xxx.o eap_xxx.o crypto_xxx.o /usr/lib/crt1.o(.text+0x18): In function `_start': ../sysdeps/i386/elf/start.S:115: undefined reference to `main' rlm_eap_xxx.o(.text+0x9): In function `xxx_initiate': /home/ns/rlm_eap_xxx/rlm_eap_xxx.c:55: undefined reference to `debug_flag' rlm_eap_xxx.o(.text+0x1a):/home/ns/rlm_eap_xxx/rlm_eap_xxx.c:55: undefined reference to `log_debug' (THIS LINE IS CALLING DEBUG2(....)) rlm_eap_xxx.o(.text+0x6f):/home/ns/rlm_eap_xxx/rlm_eap_xxx.c:72: undefined reference to `radlog' ( this line calls radlog(L_ERR, "rlm_eap_xxx: out of memory");) rlm_eap_xxx.o(.text+0xc2):/home/ns/rlm_eap_xxx/rlm_eap_xxx.c:88: undefined reference to `radlog' ( this line calls radlog(...)) rlm_eap_xxx.o(.text+0x14e):/home/ns/rlm_eap_xxx/rlm_eap_xxx.c:114: undefined reference to `debug_flag' (THIS LINE IS CALLING DEBUG2(....)) rlm_eap_xxx.o(.text+0x15f):/home/ns/rlm_eap_xxx/rlm_eap_xxx.c:114: undefined reference to `log_debug' rlm_eap_xxx.o(.text+0x180): In function `xxx_authenticate': /home/ns/rlm_eap_xxx/rlm_eap_xxx.c:124: undefined reference to `debug_flag' rlm_eap_xxx.o(.text+0x191):/home/ns/rlm_eap_xxx/rlm_eap_xxx.c:124: undefined reference to `log_debug' DEBUG2() rlm_eap_xxx.o(.text+0x1bd):/home/ns/rlm_eap_xxx/rlm_eap_xxx.c:146: undefined reference to `radlog' radlog() rlm_eap_xxx.o(.text+0x29c):/home/ns/rlm_eap_xxx/rlm_eap_xxx.c:168: undefined reference to `radlog' rlm_eap_xxx.o(.text+0x2df):/home/ns/rlm_eap_xxx/rlm_eap_xxx.c:173: undefined reference to `radlog' rlm_eap_xxx.o(.text+0x2fc):/home/ns/rlm_eap_xxx/rlm_eap_xxx.c:180: undefined reference to `debug_flag' rlm_eap_xxx.o(.text+0x30d):/home/ns/rlm_eap_xxx/rlm_eap_xxx.c:180: undefined reference to `log_debug' rlm_eap_xxx.o(.text+0x329):/home/ns/rlm_eap_xxx/rlm_eap_xxx.c:182: undefined reference to `pairmake' THIS LINE CALLS pairmake() rlm_eap_xxx.o(.text+0x346):/home/ns/rlm_eap_xxx/rlm_eap_xxx.c:184: undefined reference to `radlog' rlm_eap_xxx.o(.text+0x36d):/home/ns/rlm_eap_xxx/rlm_eap_xxx.c:188: undefined reference to `pairadd' rlm_eap_xxx.o(.text+0x386):/home/ns/rlm_eap_xxx/rlm_eap_xxx.c:194: undefined reference to `pairfind' rlm_eap_xxx.o(.text+0x3a3):/home/ns/rlm_eap_xxx/rlm_eap_xxx.c:206: undefined reference to `radlog' eap_xxx.o(.text+0x2b): In function `eapxxx_alloc': /home/ns/rlm_eap_xxx/eap_xxx.c:71: undefined reference to `radlog' eap_xxx.o(.text+0x17b): In function `eapxxx_extract': /home/ns/rlm_eap_xxx/eap_xxx.c:133: undefined reference to `radlog' eap_xxx.o(.text+0x24c):/home/ns/rlm_eap_xxx/eap_xxx.c:200: undefined reference to `radlog' eap_xxx.o(.text+0x36a): In function `eapxxx_compose': /home/ns/rlm_eap_xxx/eap_xxx.c:289: undefined reference to `radlog' eap_xxx.o(.text+0x4a9):/home/ns/rlm_eap_xxx/eap_xxx.c:340: more undefined references to `radlog' follow eap_xxx.o(.text+0x4d9): In function `xxx_msg1': /home/ns/rlm_eap_xxx/eap_xxx.c:349: undefined reference to `lrad_rand' eap_xxx.o(.text+0x4fe):/home/ns/rlm_eap_xxx/eap_xxx.c:351: undefined reference to `radlog' eap_xxx.o(.text+0x530):/home/ns/rlm_eap_xxx/eap_xxx.c:355: undefined reference to `radlog' eap_xxx.o(.text+0x626): In function `xxx_msg3': /home/ns/rlm_eap_xxx/eap_xxx.c:396: undefined reference to `radlog' eap_xxx.o(.text+0x656):/home/ns/rlm_eap_xxx/eap_xxx.c:402: undefined reference to `radlog' collect2: ld returned 1 exit status make: *** [rlm_eap_xxx-1.1.3.so] Error 1 in rlm_eap_xxx.c I'm including : #include <radiusd.h> , suggestions ? thank you ! kky
kky <mingyur@inventati.org> wrote:
Hi, I'm developing an auth module based on eap outside of the FreeRADIUS environment and I'm having some problems linking freeRadius functions to my module ! ... /usr/lib/crt1.o(.text+0x18): In function `_start': ../sysdeps/i386/elf/start.S:115: undefined reference to `main'
That's the problem. You're not compiling it as a module. You're compiling it as a stand-alone program. To create a module, just put it into the source tree along with the other modules. Create a minimal Makefile, based on the Makefiles for the other modules. The build system will pick it up and compile it. Alan DeKok. -- http://deployingradius.com - The web site of the book http://deployingradius.com/blog/ - The blog
participants (2)
-
Alan DeKok -
kky