Indeed, when the main application is linked with '--export-dynamic', plugins will inherit symbols from it if they exist, overwriting a locally defined symbol of the same name. So the best solution would be to create internal function stubs for all such functions. This is done for variables already. For the case at hand it would mean to add: void gres_ctld_job_build_details(List job_gres_list, uint32_t *gres_detail_cnt, char ***gres_detail_str, char **total_gres_str) { return; } to src/plugins/select/linear/select_linear.c in some way shape or form - optionally with a fatal() error messages.