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-port...@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

Reply via email to