Makefile的问题以及链接到所有操作系统的图形库

时间:2018-03-14 16:38:50

标签: gcc makefile mingw x11

这是我在这里的第一篇文章,如果有什么事情发生,请耐心等待! 所以,我正在尝试使用gcc / make编译可执行文件,以使它们可以分发到所有操作系统(Win / Mac / Linux)。我在这里附上了我的Makefile的相关片段。我知道我需要静态链接图形库(也许是其他库,我不确定)到" taxi_D"(见于Makefile的可执行文件部分)。其中一个图形库是由我生成的。被视为(libPltDP.a)。即使我使用静态标志编译taxi_D并使用它,我也会收到错误。我只会遇到“出租车”和“出租车”的问题。它使用图形库,其他工作正常。

这是Mac的终端输出,我无法编译它 -

gfortran -fdefault-real-8 -g -fbacktrace -ffree-form -ffree-line-length-0  taxi_driver_dakota.o taxi.o init.o setup.o setbc.o setbl.o update.o globit.o parm.o disp.o nxyset.o rpqset.o axell.o resj.o res0.o plcalc.o ff3d.o setq.o rowops.o io.o mrchbl.o blsys.o bldif.o blvar.o blfun.o bltrn.o uicalc.o forces.o bsolve.o uplot.o plutil.o spline.o lefind.o filter.o gaussn.o userio.o upause.o modes.o readst.o lossmodel.o suction.o bladegenauto.o loft.o spln2d.o postproc.o txset.o grdgen.o  readai.o   setexp.o sgutil.o grdpar.o tcdes.o ttdes.o datparse.o diskout.o blade_volume.o dogleg.o dpmpar.o enorm.o fdjac1.o hybrd.o qform.o qrfac.o r1mpyq.o r1updt.o flowpath.o strmline.o bladedata.o lspfit.o cubicbspline.o -static ../libs/libPltDP.a -L/opt/X11/lib -o taxi_D -lX11
ld: library not found for -lcrt0.o
collect2: error: ld returned 1 exit status
make: *** [taxi_D] Error 1

对于Mac(10.13.3)/ Linux(Open-Sure)我只是得到错误" ld"返回错误-1,这应该意味着在链接之前出现问题。 对于Win7(64),我得到了丢失DLL的错误(libgcc-s-dw2-1.dll& libfortran-3.dll)。

(GCC版本 - Mac(Posix 6.3),Linux - (Posix 4.5),Win - 5.4通过MinGW / MSYS) 我不明白X11的错综复杂的细节,感觉像链接的一些问题,不想做猜测工作。即使我检查了命令' ldd' &安培;它始终显示taxi_D与.so文件的依赖关系。

任何建议在这里都会非常有用。提前致谢 !

PLTLIB = ../libs/libPltDP.a 
PLTLIB1 = ../libs/libPltDP.a -L/usr/X11/lib
SPLIT = ../tcttdes
UNAME := $(shell uname)

OBJSOL = .... (contains object files) (omitted)

fast: FCOMP = gfortran
fast: FLG    = -fdefault-real-8 -g -fbacktrace -ffixed-form -Wline-truncation -fdollar-ok -ffixed-line-length-none
fast: F90OPTS = -fdefault-real-8 -g -fbacktrace -ffree-form -ffree-line-length-0 
fast: FLGOPT =  $(FLG)
fast: FLGN   =  $(FLG)
fast: tcdes ttdes taxi_driver taxi_D

# Source files - Compilation ......(omiited)
#*****************************************************************************
#Executables # 
#*****************************************************************************

ifeq ($(UNAME),Linux)   
    taxi_D: taxi_driver_dakota.o $(OBJSOL)
    $(FCOMP) $(F90OPTS) taxi_driver_dakota.o $(OBJSOL) $(PLTLIB1) -o taxi_D -lX11
else
    taxi_D: taxi_driver_dakota.o $(OBJSOL)
    $(FCOMP) $(F90OPTS) taxi_driver_dakota.o $(OBJSOL) $(PLTLIB) -o taxi_D -lgdi32
endif

0 个答案:

没有答案