I see that dpdk started to support abi versions in following ways: DPDK_2.0 { global:
rte_jobstats_context_finish; rte_jobstats_context_init; ..... rte_jobstats_set_update_period_function; rte_jobstats_start; local: *; }; DPDK_16.04 { global: rte_jobstats_abort; } DPDK_2.0; ./dpdk/lib/librte_jobstats/Makefile:EXPORT_MAP := rte_jobstats_version.map ./dpdk/mk/rte.lib.mk:CPU_LDFLAGS += --version-script=$(SRCDIR)/$(EXPORT_MAP) I.e. they describe in .map file which functions to expert and what ABI/API level they are. We can use something the same. But I'm not big fun of manually writing such files. And maybe maintain different ABI versions in one source is not a good idea. But we can try to generate .map and filter out all not "odp_" functions, then specify this .map to linked. Maxim.