On Apr 11, 2010, at 11:53 PM, Johannes Berg wrote:
cc -fPIC -shared -Wall -Wextra -DPLUGINNAME=antispam - DHAVE_CONFIG_H - I/opt/local/include/dovecot/ -I/opt/local/include/dovecot/src/ -I/ opt/ local/include/dovecot/src/lib/ -I/opt/local/include/dovecot/src/lib- storage/ -I/opt/local/include/dovecot/src/lib-mail/ -I/opt/local/ include/dovecot/src/lib-imap/ -I/opt/local/include/dovecot/src/lib- dict/ -I/opt/local/include/dovecot/src/lib-index/ -I/opt/local/ include/ dovecot/src/imap/ signature.o antispam-plugin.o antispam-storage.o dspam-exec.o -o lib90_antispam_plugin.so Undefined symbols: "_mailbox_get_name", referenced from: _mailbox_patternmatch in antispam-plugin.o _mailbox_is_spam in antispam-plugin.o _mailbox_is_trash in antispam-plugin.o _mailbox_is_unsure in antispam-plugin.o
Looks like your linker is prepending _ to each symbol, which probably don't exist since dovecot itself exports w/o the underscore ... I have no idea why it's doing that though.
johannes
If someone else stumbles upon this thread.
From unix-porting@lists.apple.com
The underscores are a red herring. If you use nm to look at the
executables that export mailbox_get_name, for example libexec/ dovecot/imap, you see that the symbol is exported with the underscore.You need to use the appropriate linker flags for your module, like - undefined dynamic_lookup. Look at how dovecot's own modules are
linked when you build dovecot.
Adding 'CFLAGS += -undefined dynamic_lookup' to .config allows for
make to complete without error.
I have not tested the .so plugin and if there are problems I will
report it to this thread.
Thanks for the help, Bradley Giesbrecht