错误:-march =开关坏值 [英] Error: bad value for -march= switch

查看:334
本文介绍了错误:-march =开关坏值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我写了一个Makefile,我无法得到它的工作。我这是应该选择编译到处理器的选项。然而,当我运行制作从它说的命令行:

  tandex @ tandex-P-6860FX:〜/仿真器/任天堂的SDK / 3DS SDK [自制] $化妆
GCC -march = ARM7TDMI -static -fexceptions -fnon叩例外-fstack检查test.c的-c
test.c的:1:0:错误:错误值(ARM7TDMI)为-march =开关使:*** [全部]错误1

但在手册页的gcc,它指出ARM7TDMI是一个允许值。我缺少的东西吗?

的Makefile:

 #3DS编译生成文件(C)TanDex(TEQ)RunawayFreelancers

的#Version 0.99(阿尔法)对于* nix的设备

#Please请稍后再回来进行第三次SDK#SELECT编译器使用! GCC推荐!
#FOR SANITY SAKE,与海湾合作委员会采用C文件和CPP文件与G ++
CC = GCC
#CC = G ++#OBJECTCOPY参考,切勿拆卸
OBJC = objcopy把
OBJREFS = -O二进制#SELECT处理器TUNE IT TO。的ARMv7(任天堂DS)或ARMV9(任天堂的DS
(图形支持))
#OR ARM11内核ARM1176JZ-S和ARM1176JZF-S(3DS处理器?不知道是否正确。请尝试
看看他们的工作?)

#NOTE:DS游戏同时需要ARM7和ARM9的二进制文件。运行此两次(一次一个)

#UNCOMMENT FOR。处理器处理器= ARM7TDMI
#处理器= ARM946E-S
#处理器= ARM1176JZ-S
#处理器= ARM1176JZF-S#FILES

#PLACE本站不HERE,正在编纂的!
FILES = test.c的根据处理器#SET BIN文件名称所选
IFEQ($(处理器),ARM7TDMI)\\
NAME = ARM7.BIN
IFEQ($(处理器),ARM946E-S)\\
NAME = ARM9.BIN
IFEQ($(处理器),ARM1176JZ-S)\\
NAME = ARM11.BIN
IFEQ($(处理器),ARM1176JZF-S)\\
NAME = ARM11.BIN#创建物体
IFEQ($(CC),GCC)\\
OBJECTS = $(FILES:.C =的.o)
IFEQ($(CC),G ++)\\
OBJECTS = $(FILES:=的.cpp的.o)#FLAGS!不要改变这些!!!!!!!!!!!这意味着你!!!!!

#FOR那些想知道这些干什么,它们是:
#-mtune = $(处理器)FORE编译器来调整输出到指定的
处理器
#-static需的清洁二进制输出? (不知道这是什么
呢,但SUGESTED一个帖子StackOverflow上)
#-fexceptions FORCE例外
#-fnon叩例外FORCE例外情况只能送回由系统
(内存和FPU Instructor作业为例)
#-fstack检查FORCE堆栈检查(DS / 3DS使用的尴尬STACK
实施)
CFLAGS = -march = $(PROCESSOR)静电-fexceptions -fnon叩例外-fstack检查所有:
$(CC)$(CFLAGS)$(文件)-c
.c.o:
$(OBJC)$(OBJREFS)$(对象)$(NAME)
.cpp.o:
$(OBJC)$(OBJREFS)$(对象)$(NAME)


解决方案

您很可能不会调用正确的GCC。你似乎被调用系统中安装了gcc,而不是自带的3DS SDK的人。

I wrote a Makefile and I can't get it to work. I have an option which is supposed to select which processor to compile to. However, when I run make from the commandline it says:

tandex@tandex-P-6860FX:~/emulators/nintendo sdks/3DS SDK [HomeBrew]$ make
gcc -march=arm7tdmi -static -fexceptions -fnon-call-exceptions -fstack-check test.c -c
test.c:1:0: error: bad value (arm7tdmi) for -march= switch

make: *** [ALL] Error 1

But in the man pages for gcc, it states that arm7tdmi is a permissible value. Am I missing something?

Makefile:

#3DS Compilation Makefile (c) TanDex (TEQ)RunawayFreelancers
#
#Version 0.99 (Alpha) For *nix Devices
#
#Please Check Back Soon for 3rd SDK

#SELECT THE COMPILER TO USE! GCC RECOMMENDED!
#FOR SANITY SAKE, USE C FILES WITH GCC AND CPP FILES WITH G++
CC=gcc
#CC=g++

#OBJECTCOPY REFERENCE, DO NOT REMOVE
OBJC=objcopy
OBJREFS= -O Binary

#SELECT THE PROCESSOR TO TUNE IT TO. ARMV7 (Nintendo DS) or ARMV9(Nintendo DS
(Graphical Support))
#or ARM11 Core ARM1176JZ-S and ARM1176JZF-S (3DS Processor? Not Sure if Correct. Try
and see if they Work?)
#
#NOTE: DS GAMES REQUIRE BOTH A ARM7 AND ARM9 BINARY. RUN THIS TWICE (ONCE FOR EACH)
#
#UNCOMMENT FOR PROCESOR

PROCESSOR=arm7tdmi
#PROCESSOR=arm946e-s
#PROCESSOR=arm1176jz-s
#PROCESSOR=arm1176jzf-s

#FILES
#
#PLACE ALL OF THE FILES HERE, THAT ARE BEING COMPILED!
FILES=test.c

#SET BIN FILE NAME BASED ON PROCESSOR SELECTED
ifeq($(PROCESSOR),arm7tdmi)\
NAME=ARM7.BIN
ifeq($(PROCESSOR), arm946e-s)\
NAME=ARM9.BIN
ifeq($(PROCESSOR), arm1176jz-s)\
NAME=ARM11.BIN
ifeq($(PROCESSOR), arm1176jzf-s)\
NAME=ARM11.BIN

#CREATE OBJECTS
ifeq($(CC), gcc)\
OBJECTS=$(FILES:.c=.o)
ifeq($(CC), g++)\
OBJECTS=$(FILES:.cpp=.o)

#FLAGS! DO NOT CHANGE THESE!!!!!!!!!!! THAT MEANS YOU!!!!!
#
#FOR THOSE WHO WANT TO KNOW WHAT THESE DO, HERE THEY ARE:
#-mtune=$(PROCESSOR)        FORE THE COMPILER TO TUNE OUTPUT TO THE SPECIFIED
PROCESSOR
#-static            REQUIRED FOR CLEAN BINARY OUTPUT?? (NOT SURE WHAT THIS
DOES, BUT WAS SUGESTED ON A POST ON STACKOVERFLOW)
#-fexceptions           FORCE EXCEPTIONS
#-fnon-call-exceptions      FORCE EXCEPTIONS TO ONLY BE RETURNED BY THE SYSTEM
(MEMORY AND FPU INSTRUTIONS FOR EXAMPLE)
#-fstack-check          FORCE STACK CHECKING (DS / 3DS USE AWKWARD STACK
IMPLEMENTATION)
CFLAGS=-march=$(PROCESSOR) -static -fexceptions -fnon-call-exceptions -fstack-check

ALL:
$(CC) $(CFLAGS) $(FILES) -c
.c.o:
$(OBJC) $(OBJREFS) $(OBJECTS) $(NAME)
.cpp.o:
$(OBJC) $(OBJREFS) $(OBJECTS) $(NAME)

解决方案

You are probably not calling the right gcc. You seem to be calling the gcc installed in your system, rather than the one that comes with the 3DS SDK.

这篇关于错误:-march =开关坏值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆