Fx operators should be compiled and linked into a dynamic shared object (.so) or dynamically linked object (.dll).
For example, a simple makefile to build and install an Fx operator might be as follows:
.SUFFIXES:.c .o .ufo UFO_SRCS = mix.c \ colour_mix.c \ swirl.c UFO_TARGETS = $(UFO_SRCS:.c=.ufo) UFO_DIR = /var/userdsk/parallax/parallax_process_ufos $(UFO_TARGETS):: cc -c -g $(@:.ufo=.c) ld -shared -exports_file export_symbols -o $@ $(@:.ufo=.o) all: make $(UFO_TARGETS) release: - mkdir $(UFO_DIR) cp $(UFO_TARGETS) $(UFO_DIR)
The -exports_file export_symbols flag prevents two (or more) UFOs with global functions of the same name from calling each other's functions instead of their own functions. export_symbols is a file containing the symbols for all the UFO user functions. When linked with this flag, all global symbols are hidden apart from the user function global symbols in this file.