C pluginsystem:符号查找错误

我正在编写一个插件系统,它与其他3个模块分开:

  1. plugin_system.c – 系统的核心
  2. list.c – 包含插件存储的链接列表实现
  3. plugin_interface.h – 包含插件所需的声明,没有与之关联的源文件

plugin_interface.h只包含类型和函数:

extern int plugin_register(PluginManager *plug_manager, const char *name, Plugin *plug); 

这是在plugin_system.c中定义的

加载插件时,插件系统会查找函数init_plugname()并调用它,该函数必须调用plugin_register来注册插件。

该程序使用复杂的递归Makefile编译(不是最好的主意),但我尝试实现的是:

我在主程序文件夹中编译插件系统对象,然后将其与主程序链接。 从make执行:

 gcc -Wall -O2 -std=gnu99 -D DEBUG -g -fPIC -c -o /home/kowa/code/reseaux/projet/ringo/c/bin/list.o list.c gcc -Wall -O2 -std=gnu99 -D DEBUG -g -fPIC -c -o /home/kowa/code/reseaux/projet/ringo/c/bin/plugin_system.o plugin_system.c 

插件使用gcc -fPIC -c -o plugname.o plugname.c plug_system.o编译,然后是gcc -o plugname.so plugname.o plug_system.o -shared

我尝试在我的主程序中加载插件并得到此错误:

 symbol lookup error: ./plugins/zyva.so: undefined symbol: exists 

existsplugin_system模块用来存储插件的list模块中的一个函数, plugin_register提到的plugin_register函数调用它。

我之前从未做过那种系统而且我不是共享库的专家,我想问题来自于我如何编译整个项目,我可能会错过一些联系……

我只是忘了将插件链接到plugin_system.o使用的list.o