как слинковать проект на линуксе?
собираю опенсорс проект, который написан под виндовс. сделал makefile, собрал все объекты, не могу слинковать. во время сборки объектов проблем не было. в результате должна получиться статическая библиотека. под виндовс это была name.LIB. полагаю, мне нужно собрать name.A. makefile:
_FLAGS = -I/usr/include/SDL2 -lSDL2 -I./include -I./include/psx -Wno-narrowing
CFLAGS += $(_FLAGS)
CXXFLAGS += $(_FLAGS)
BUILD_DIR = ./build
OBJ_DIR = $(BUILD_DIR)/objects
SOURCE_DIR = ./src
TARGET = PsyCross
LOW_CC_SRC = $(wildcard $(SOURCE_DIR)/*.c) $(wildcard $(SOURCE_DIR)/*/*.c)
CAPS_CC_SRC = $(wildcard $(SOURCE_DIR)/*.C) $(wildcard $(SOURCE_DIR)/*/*.C)
LOW_CC_OBJ = $(patsubst $(SOURCE_DIR)/%.c,$(OBJ_DIR)/%.o,$(LOW_CC_SRC))
CAPS_CC_OBJ = $(patsubst $(SOURCE_DIR)/%.C,$(OBJ_DIR)/%.O,$(CAPS_CC_SRC))
CXX_SRC = $(wildcard $(SOURCE_DIR)/*.cpp) $(wildcard $(SOURCE_DIR)/*/*.cpp)
CXX_OBJ = $(patsubst $(SOURCE_DIR)/%.cpp,$(OBJ_DIR)/%.opp,$(CXX_SRC))
OBJ = $(LOW_CC_OBJ) $(CAPS_CC_OBJ) $(CXX_OBJ)
.PHONY: all
all: $(OBJ)
$(CC) -lm -lopenal $(_FLAGS) $(OBJ) -o $(TARGET)
$(OBJ_DIR)/%.o: $(SOURCE_DIR)/%.c
mkdir -p $(dir $@)
$(CC) $(CFLAGS) -c $< -o $@
$(OBJ_DIR)/%.O: $(SOURCE_DIR)/%.C
mkdir -p $(dir $@)
$(CC) $(CFLAGS) -c $< -o $@
$(OBJ_DIR)/%.opp: $(SOURCE_DIR)/%.cpp
mkdir -p $(dir $@)
$(CXX) $(CXXFLAGS) -c $< -o $@
пишет ошибки
/usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/../../../../lib/Scrt1.o: в функции «_start»:
(.text+0x1b): undefined reference to `main'
collect2: ошибка: выполнение ld завершилось с кодом возврата 1
make: *** [makefile:17: all] Ошибка 1
сам разобрался. библиотеки нужно собирать с помощью ar, а не gcc