diff --git a/unix/Makefile b/unix/Makefile
index b336892a429d5cd85066e27dbc7fec4f382908e6..4dcba22e2303734d1ec760c57eef711d52e45b98 100644
--- a/unix/Makefile
+++ b/unix/Makefile
@@ -19,7 +19,7 @@ CFLAGS = $(INC) -Wall -Werror -ansi -std=gnu99 -DUNIX $(CFLAGS_MOD) $(COPT)
 
 UNAME_S := $(shell uname -s)
  ifeq ($(UNAME_S),Darwin)
-    LDFLAGS = $(LDFLAGS_MOD) -lm -Wl,-map,$@.map,-order_file,order.def
+    LDFLAGS = $(LDFLAGS_MOD) -lm -Wl,-map,$@.map,-order_file,$(BUILD)/order.def
  else
     LDFLAGS = $(LDFLAGS_MOD) -lm -Wl,-Map=$@.map,--cref
  endif
@@ -71,9 +71,16 @@ SRC_C = \
 	modos.c \
 	$(SRC_MOD)
 
-# Must be the last file
 ifeq ($(UNAME_S),Darwin)
+# Must be the last file in list of sources
 SRC_C += seg_helpers.c
+
+# making seg_helpers.c rely on order.def will force order.def to be created
+seg_helpers.c: $(BUILD)/order.def
+
+# create order.def in build directory
+$(BUILD)/order.def:
+	$(Q)echo "seg_helpers.o: ___bss_start" > $@
 endif
 	
 OBJ = $(PY_O) $(addprefix $(BUILD)/, $(SRC_C:.c=.o))
diff --git a/unix/order.def b/unix/order.def
deleted file mode 100644
index 34a4fea3e694861f0967d3a127cb0bc8f8ff801a..0000000000000000000000000000000000000000
--- a/unix/order.def
+++ /dev/null
@@ -1 +0,0 @@
-seg_helpers.o: ___bss_start