On Sun, 2007-07-15 at 09:51 -0400, Farokh Irani wrote: > I've set up a Debian 4 machine and I'm trying to compile/install a > small test module. I'm using APXS2 as follows: > > apxs2 -ic -S CC=g++ -n mod_fancy mod_fancy.cpp config.cpp > > It compiles, and installs the mod_fancy.so file in /usr/lib/apache2/modules. > > But, when I try to get apache to load it, I get an error when apache starts: > apache2: Syntax error on line 185 of /etc/apache2/apache2.conf: Syntax error > on line 1 of /etc/apache2/mods-enabled/mod_fancy.load: Can't locate API > module structure `fancy_module' in file > /usr/lib/apache2/modules/mod_fancy.so: > /usr/lib/apache2/modules/mod_fancy.so: undefined symbol: fancy_module > > Using nm on the .so file, I get the following: > 000015e8 A __bss_start > 000003b0 t call_gmon_start > 000015e8 b completed.5621 > 000014e8 d __CTOR_END__ > 000014e4 d __CTOR_LIST__ > w __cxa_finalize@@GLIBC_2.1.3 > 00000480 t __do_global_ctors_aux > 000003e0 t __do_global_dtors_aux > 000015e0 d __dso_handle > 000014f0 d __DTOR_END__ > 000014ec d __DTOR_LIST__ > 000014f8 a _DYNAMIC > 000015e8 A _edata > 000015ec A _end > 000004c4 T _fini > 00000440 t frame_dummy > 000004e0 r __FRAME_END__ > 000015cc a _GLOBAL_OFFSET_TABLE_ > w __gmon_start__ > 00000475 t __i686.get_pc_thunk.bx > 00000360 T _init > 000014f4 d __JCR_END__ > 000014f4 d __JCR_LIST__ > w _Jv_RegisterClasses > 000015e4 d p.5619 > > Anyone have any ideas why the symbol isn't being exported? I'm using > gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21).
No - you are not! You are using g++-4... which is a C++ compiler. Are you aware of C++ name mangling? Did you declare your exported symbols 'extern C'? Cheers, Ralf Mattes > Thanks.