【问题标题】:How do I make this makefile from 1996 work?如何使这个 1996 年的 makefile 工作?
【发布时间】:2017-05-27 22:46:29
【问题描述】:

这是 1996 年的旧 GSM 标准的 make 文件。我需要让它在运行 OSX 10.11.6 的 MacBook 或 Windows 7 的大学计算机上工作。windows 没有安装 nmake谷歌搜索后,问题似乎是一个解决方案。

有没有办法使用makefile?

此外,在我的 Mac 上将 CDIR 和 UTILSDIR 更改为完整路径还不够。

make -f makefile.mak

仍然返回

TCC -A -I/Users/Henrik/Desktop/GSMHR2/DISK/c -Fc -ml -c /Users/Henrik/Desktop/GSMHR2/DISK/c/gsm_hr.c
make: TCC: No such file or directory
make: *** [gsm_hr.obj] Error 1

我认为 TCDIR 也会出现类似的问题 这是完整的 makefile.mak 内容:

#
#   makefile for GSM Half-Rate Speech Codec
#   Version 5.0.0
#   November 8, 1996
#
.SUFFIXES: .out .obj .c .e .r .f .y .l .s .p .os
CC=TCC
CDIR=..\c
UTILSDIR=..\utils

TCDIR=c:/turboc/lib
CAlsoDef=-A -I$(CDIR) -Fc -ml
CDefault=$(CAlsoDef)
CDefaultExec=$(CAlsoDef)

# installation
install: gsm_hr reid swapbin tosnwild topcwild

# EXACT files
globdefs.obj:  $(CDIR)/globdefs.c
    $(CC) $(CDefault) -c $?
mathdp31.obj:  $(CDIR)/mathdp31.c
    $(CC) $(CDefault) -c $?
mathhalf.obj:  $(CDIR)/mathhalf.c
    $(CC) $(CDefault) -c $?

# 
# speech coder: analysis and synthesis
#  object files
#
dtx.obj:  $(CDIR)/dtx.c
    $(CC) $(CDefault) -c $?
err_conc.obj:  $(CDIR)/err_conc.c
    $(CC) $(CDefault) -c $?
homing.obj:  $(CDIR)/homing.c
    $(CC) $(CDefault) -c $?
sp_dec.obj:  $(CDIR)/sp_dec.c
    $(CC) $(CDefault) -c $?
sp_enc.obj:  $(CDIR)/sp_enc.c
    $(CC) $(CDefault) -c $?
sp_rom.obj:  $(CDIR)/sp_rom.c
    $(CC) $(CDefault) -c $?
sp_sfrm.obj:  $(CDIR)/sp_sfrm.c
    $(CC) $(CDefault) -c $?
sp_frm.obj:  $(CDIR)/sp_frm.c
    $(CC) $(CDefault) -c $?
vad.obj:  $(CDIR)/vad.c
    $(CC) $(CDefault) -c $?

# Host files
host.obj:  $(CDIR)/host.c
    $(CC) $(CDefault) -c $?

# main program
gsm_hr.obj: $(CDIR)/gsm_hr.c
    $(CC) $(CDefault) -c $?

# utility programs
reid.obj:  $(UTILSDIR)/reid.c
    $(CC) $(CDefault) -c $?
swapbin.obj:  $(UTILSDIR)/swapbin.c
    $(CC) $(CDefault) -c $?
topcwild.obj:  $(UTILSDIR)/topcwild.c
    $(CC) $(CDefault) -c $?
tosnwild.obj:  $(UTILSDIR)/tosnwild.c
    $(CC) $(CDefault) -c $?

# ***********************  symbols ******************************************

EXACT3 = globdefs.obj mathdp31.obj mathhalf.obj 

SPEECH = sp_dec.obj sp_enc.obj sp_frm.obj sp_rom.obj sp_sfrm.obj

GSM_HR = $(EXACT3) $(SPEECH) dtx.obj err_conc.obj host.obj homing.obj vad.obj


#***********************  executables  **************************************

# main program
gsm_hr: gsm_hr.obj $(GSM_HR)  
    $(CC) $(CDefaultExec) -egsm_hr.exe @gsm_hr.rsp 

# utility programs
reid: reid.obj
    $(CC) $(CDefaultExec) -ereid.exe  reid.obj
swapbin: swapbin.obj
    $(CC) $(CDefaultExec) -eswapbin.exe  swapbin.obj
tosnwild: tosnwild.obj
    $(CC) $(CDefaultExec) -etosnwild.exe  tosnwild.obj
topcwild: topcwild.obj
    $(CC) $(CDefaultExec) -etopcwild.exe  topcwild.obj

完整文件可以在这里找到https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=281

【问题讨论】:

  • 我们没有调试/移植服务。
  • 这个 Makefile 是为与 Turbo C 一起工作而编写的。尝试找到它的副本,看看它的去向。
  • 您最好从名为“MAKEFILE”的文件开始,而不是从名为“MAKEFILE.MAK”的文件开始,至少对于在 OS X 上构建而言。
  • 你真的有turbo C吗?如果是这样,它是否安装在c/turbo/lib 目录中?如果您没有 turbo C,则需要修改 makefile.mak 以通过现代 make 实用程序所期望的语法使用一些现代 make 实用程序。
  • 按照您提供的源文件链接,我只找到了显示“实时”菜单的程序的可执行文件。也许您可以修改该链接以转到实际的源文件

标签: c windows macos makefile compiler-errors


【解决方案1】:
  1. 删除CC=TCC。这是对古代 DOS C 编译器 (Turbo C) 的引用。

  2. 将CDIR 和UTILSDIR 中的反斜杠替换为正斜杠。路径中的反斜杠是 MS-DOS 主义。

  3. 将CAlsoDef=-A -I$(CDIR) -Fc -ml 替换为CAlsoDef=-I$(CDIR)。其他选项特定于 TCC。

  4. 希望源代码不需要太多改动。祝你好运。

【讨论】:

    猜你喜欢
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多