Hi all, I am trying to use make command for my C program but I am getting this error. I am using EDS embedded command shell 15.1 and I am in the same directory as my C program and Makefile.
$ make
arm-linux-gnueabihf-gcc -g -Wall -I C:/altera/15.1/embedded/ip/altera/hps/altera_hps/hwlib/include -c main.c -o main.o
In file included from main.c:5:0:
C:/altera/15.1/embedded/ip/altera/hps/altera_hps/hwlib/include/hwlib.h:56:2: error: #error You must define soc_cv_av or soc_a10 before compiling with HwLibs
#error You must define soc_cv_av or soc_a10 before compiling with HwLibs
^
main.c:6:25: fatal error: socal/socal.h: No such file or directory
#include "socal/socal.h"
^
compilation terminated.
make: *** [main.o] Error 1
Here is my make file.
#
TARGET = hps_gpio
#
CROSS_COMPILE = arm-linux-gnueabihf-
CFLAGS = -g -Wall -I ${SOCEDS_DEST_ROOT}/ip/altera/hps/altera_hps/hwlib/include
LDFLAGS = -g -Wall
CC = $(CROSS_COMPILE)gcc
ARCH= arm
build: $(TARGET)
$(TARGET): main.o
$(CC) $(LDFLAGS) $^ -o $@
%.o : %.c
$(CC) $(CFLAGS) -c $< -o $@
.PHONY: clean
clean:
rm -f $(TARGET) *.a *.o *~
Any help please??
The code below is a good example of a Makefile for the Cyclone V SOC, developed by Joel Bodenmann.
################################################################################
# Makefile for the DE1-SoC. #
# Tested with Quartus 15 / EDS SoC 15 on Windows 10 64-Bit #
# #
# Copyright © 2015 by Joel Bodenmann joel@embedded.pro #
# #
# Feel free to use this makefile without any warranty on your own risk. #
################################################################################
# This is the name of the binaries that will be generated
TARGET = de1_soc_hps_binary
# The device family (soc_cv_av = Cyclone V ; soc_a10 = Aria 10)
ALT_DEVICE_FAMILY = soc_cv_av
# Some paths (Default should work)
HWLIBS_ROOT = ${SOCEDS_DEST_ROOT}/ip/altera/hps/altera_hps/hwlib
# Here we add all *.c files that we want to compile
CSRCS =
# Here we add all *.cpp files that we want to compile
CPPSRCS =
# Here we add the paths to all include directories
INCS =
# Parameters for SCP upload. Set up SSH keys to bypass password prompt
SCP_TARGET_IP = 192.168.1.100
SCP_USER = root
SCP_TARGET_PATH = /home/root
SCP = SCP
SCP_FLAGS =
# Compiler settings
ARCH = arm-linux-gnueabihf
LD = $(ARCH)-g++
CC = $(ARCH)-gcc
CPPC = $(ARCH)-g++
SIZE = $(ARCH)-size
CFLAGS = -g -std=gnu99 -Wall
CPPFLAGS = -g -std=c++11 -Wall
LDFLAGS = -g -Wall
################################################################################
# Don't change anything below this line #
################################################################################
# Some directory and file magic
BUILDDIR = build
OBJDIR = $(BUILDDIR)/obj
# Generate the object names
OBJS = $(addprefix $(OBJDIR)/,$(addsuffix .o,$(basename $(CSRCS:%.c=%.o))))
OBJS += $(addprefix $(OBJDIR)/,$(addsuffix .o,$(basename $(CPPSRCS:%.cpp=%.o))))
# Add some paths
CFLAGS += $(INCS:%=-I%) -I$(HWLIBS_ROOT)/include -I$(HWLIBS_ROOT)/include/$(ALT_DEVICE_FAMILY) -D$(ALT_DEVICE_FAMILY)
CPPFLAGS += $(INCS:%=-I%) -I$(HWLIBS_ROOT)/include -I$(HWLIBS_ROOT)/include/$(ALT_DEVICE_FAMILY) -D$(ALT_DEVICE_FAMILY)
LDFLAGS += $(INCS:%=-I%)
# This is the default target if the user does just calls 'make'
all: build size
# Build all the files
build: builddirs $(BUILDDIR)/$(TARGET)
# Create the required directories (if not already existing)
builddirs:
@mkdir -p $(BUILDDIR)
@mkdir -p $(OBJDIR)
# Link everything together
$(BUILDDIR)/$(TARGET): $(OBJS)
@echo Linking $@
@$(LD) $(LDFLAGS) -o $(BUILDDIR)/$(TARGET) $(OBJS)
# Compile c files
$(OBJDIR)/%.o: %.c
@mkdir -p $(dir $@)
@echo Compiling $^
@$(CC) $(CFLAGS) -c -o $@ $^
# Compile cpp files
$(OBJDIR)/%.o: %.cpp
@mkdir -p $(dir $@)
@echo Compiling $^
@$(CPPC) $(CPPFLAGS) -c -o $@ $^
# Print size information
size: $(BUILDDIR)/$(TARGET)
@echo
@echo
$(SIZE) $^
# Clean up
clean:
@rm -rf $(BUILDDIR) $(OBJS) $(TARGET) $(TARGET).* *.a *.o *~
@echo Done
# Clean must be a phony target so make knows this never exists as a file
.PHONY: clean
# Upload to target
upload:
$(SCP) $(SCP_FLAGS) $(BUILDDIR)/$(TARGET) $(SCP_USER)@$(SCP_TARGET_IP):$(SCP_TARGET_PATH
@rafael_Mello Thank you so much Rafael. Your replies always help me a lot.
Glad to know that I’m helping =)