Skip to content

Instantly share code, notes, and snippets.

@gofer
Created October 8, 2017 10:49
Show Gist options
  • Save gofer/64bb3946f905db07c5dfc945c3e774ad to your computer and use it in GitHub Desktop.
Save gofer/64bb3946f905db07c5dfc945c3e774ad to your computer and use it in GitHub Desktop.
GCC_HOME=/usr/local/gcc-5.2.0
GLIBC_HOME=/home/gofer/.local/glibc-2.22
OBJS_HOME=$(GCC_HOME)/lib/gcc/x86_64-unknown-linux-gnu/5.2.0
CC=gcc
CCFLAGS=-std=c99 -Wall -O3
LDFLAGS=--eh-frame-hdr -m elf_x86_64
#LDFLAGS+=-nostdlib -nostartfiles -static
LDFLAGS+=-rpath $(GLIBC_HOME)/lib -dynamic-linker=$(GLIBC_HOME)/lib/ld-linux-x86-64.so.2
LDFLAGS+=-L$(GCC_HOME)/lib -L$(GCC_HOME)/lib64 -L$(GLIBC_HOME)/lib -L$(OBJS_HOME) -R$(GLIBC_HOME)/lib
STARTUP_OBJS=$(GLIBC_HOME)/lib/crt1.o $(GLIBC_HOME)/lib/crti.o $(OBJS_HOME)/crtbegin.o
FINISH_OBJS=$(OBJS_HOME)/crtend.o $(GLIBC_HOME)/lib/crtn.o
TARGET=test
OBJS=main.o
.PHONY: all clean distclean
.SUFFIXES: .c .o
all: $(TARGET)
$(TARGET): $(OBJS)
$(LD) $(LDFLAGS) -o $@ $(STARTUP_OBJS) $^ --start-group -lc -lgcc -lgcc_eh --end-group $(FINISH_OBJS)
.c.o:
$(CC) $(CCFLAGS) -o $@ -c $<
clean: $(OBJS)
rm -f $^
distclean:
make clean && rm -f $(TARGET)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment