изменить Makefile для перекомпиляции с Unix на MA C OS - PullRequest
0 голосов
/ 09 июля 2020

Я занимаюсь перекомпиляцией нескольких библиотек на MA C. У меня есть файлы сборки, которые работают в системе UNIX

Я не могу преобразовать этот

# makefile for util - shared object version

FC=gfortran
ifeq ($(flavor PLATFORM),undefined)
   PLATFORM=$(shell uname -i)
endif

ifeq ("$(PLATFORM)","x86_64")
   FFLAGS= $(DBG) $(FFLAGS_BIT) $(FFLAGS_MCMODEL) $(FFLAGS_ARRAYS) $(FFLAGS_CPU)
   LIBDIR=../lib64
   LINK_LIB=
else
   FFLAGS=
   LIBDIR=../lib
   LINK_LIB=
endif
FFLAGS+= -I ../include -Iinclude

FILE=eproc.so

SRC= \
fort/derive.f \
fort/ingeom.f \
fort/support.f \
fort/tools.f \
fort/unpackadas.f \
fort/utilfile.f \
fort/utility.f \
fort/utiltran.f

OBJ=$(SRC:.f=.o)

.PHONY: all clean realclean

default: all

all: $(LIBDIR)/$(FILE)

$(LIBDIR)/$(FILE): $(LIBDIR) $(OBJ)
    ld -shared -o $(LIBDIR)/$(FILE) $(OBJ) $(ADAS_LIB) $(LINK_LIB)

.f.o:
    ${FC} ${FFLAGS} -c $*.f -o $*.o

$(LIBDIR):
    mkdir -p $(LIBDIR)

clean:
    rm -f $(OBJ)

realclean:
    rm -f $(OBJ) $(LIBDIR)/$(FILE)

, в частности, часть

$(LIBDIR)/$(FILE): $(LIBDIR) $(OBJ)
    ld -shared -o $(LIBDIR)/$(FILE) $(OBJ) $(ADAS_LIB) $(LINK_LIB)

Я пытался изменить на

$(LIBDIR)/$(FILE): $(LIBDIR) $(OBJ)
        gfortan -shared -o $(LIBDIR)/$(FILE) $(OBJ) $(ADAS_LIB) $(LINK_LIB

, но выдает ошибку

Неопределенные символы для архитектуры x86_64: « adasittsr », ссылка на которую имеется: unpackadas в unpackadas. o " readas_11 ", ссылка на которую: unpackadas в unpackadas.o " readas_11bun ", ссылка на: unpackadas в unpackadas.o ld : символ (ы) не найден для архитектуры x86_64 collect2: error: ld возвратил 1 статус выхода make: *** [../lib/eproc.so] Ошибка 1

...