【问题标题】:Compilation issues between servers服务器之间的编译问题
【发布时间】:2016-02-27 08:26:39
【问题描述】:

我正在使用下面的 Makefile 在我的本地机器上编译和运行一个 c 程序

# project name 
TARGET   = server

CC       = gcc
# compiling flags 
CFLAGS   = -std=c99 -Wall -I. -g


LINKER   = gcc -o
# linking flags 
LFLAGS   = -Wall -I. -lm


SRCDIR   = src
OBJDIR   = obj
BINDIR   = bin

SOURCES  := $(wildcard $(SRCDIR)/*.c)
INCLUDES := $(wildcard $(SRCDIR)/*.h)
OBJECTS  := $(SOURCES:$(SRCDIR)/%.c=$(OBJDIR)/%.o)
rm       = rm -f


$(BINDIR)/$(TARGET): $(OBJECTS)
    mkdir -p $(BINDIR)
    @$(LINKER) $@ $(LFLAGS) $(OBJECTS)
    @echo "Linking complete!"

$(OBJECTS): $(OBJDIR)/%.o : $(SRCDIR)/%.c
    @$(CC) $(CFLAGS) -c $< -o $@
    @echo "Compiled "$<" successfully!"

.PHONEY: clean
clean:
    @$(rm) $(OBJECTS)
    @echo "Cleanup complete!"

.PHONEY: remove
remove: clean
    @$(rm) $(BINDIR)/$(TARGET)
    @echo "Executable removed!"

这在我的本地环境(即 mac)上完美运行(尽管代码中没有任何特定于 mac 的内容)。

但是,当我在 linux 服务器上编译此代码时,出现以下错误。

Build failed. Wrong Architecture.

当我在这台运行 gcc file1 file2.... 的服务器上手动编译源文件时,它编译得很好。我的 Makefile 做错了什么。

【问题讨论】:

  • “错误的架构”消息表明您已将某些库或目标文件,甚至可执行文件从您自己的开发系统复制到其他系统。
  • 没有“构建失败。错误的架构。” Makefile 中的字符串。此消息来自其他地方。
  • 此外,为了帮助调试 makefile,删除与号,以便您看到make 运行的实际命令及其参数。这将帮助您找到导致错误的命令。
  • LFLAGS 指定一个库。你检查过那个图书馆吗? file 命令可以告诉你一些关于它的信息,IIRC。
  • 另请注意:虽然.PHONY 目标对某些makes 具有特殊意义,但我不知道有任何与.PHONEY 具有相同(或任何)意义。

标签: c gcc


【解决方案1】:

你在做之前做了清洁吗?我认为有些文件或库是建立在其他架构上的

【讨论】:

  • 虽然这可能构成有用的建议,但它不是问题的答案。
  • 我不确定 makefile 是不是问题,这个答案很可能是解决问题的正确方法。
猜你喜欢
  • 2011-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-05
  • 1970-01-01
  • 1970-01-01
  • 2021-09-15
相关资源
最近更新 更多