首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RISCV的交叉编译

RISCV的交叉编译
EN

Stack Overflow用户
提问于 2015-02-16 08:46:58
回答 1查看 2.2K关注 0票数 3

我有一个C程序,我想把它编译成RISCV ISA。我已经按照他们的说明安装了这些工具。他们的工具工作正常,我可以编译一个"Hello world!“C程序并运行它。但是现在我想编译另一个包含多个文件的C程序。我尝试更改makefile,而不是使用gcc,我将其替换为他们的编译器名称riscv64-unknown-linux-gnu-gcc,但我得到:

Relocations in generic ELF (EM: 62)

错误,然后我尝试设置CC = riscv64-unknown-linux-gnu-gcc,但是我得到了另一个关于pthread的错误

unrecognized command line option '-pthread'

我的问题是,我应该更改make文件以使用它们的编译器吗?

提前感谢您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2015-02-17 17:39:01

代码语言:javascript
复制
DEBUG := 0
PROFILE := 0
MRSFAST_VERSION := "3.3.1"
BUILD_DATE := "$(shell date)"

all: OPTIMIZE_FLAGS build
debug: DEBUG_FLAGS build
profile: PROFILE_FLAGS build
build: clean-executable SSE_FLAGS compile mrsfast snp_indexer clean

LDFLAGS=#-static
LIBS=-lz -lm -pthread -lpthread
CFLAGS=-fno-pic -DMRSFAST_VERSION=\"$(MRSFAST_VERSION)\" -DBUILD_DATE=\"$(BUILD_DATE)\"

objects=baseFAST.o Sort.o MrsFAST.o Common.o CommandLineParser.o RefGenome.o HashTable.o Reads.o Output.o SNPReader.o  HELP.o

compile: $(objects)

mrsfast:
ifeq ($(shell uname -s),Linux)
    gcc -w $(objects) -o $@ ${LDFLAGS} ${LIBS}
else
    gcc -Wl,-no_pie -fno-pic -w $(objects) -o $@ ${LDFLAGS} ${LIBS}
endif

snp_indexer: SNPIndexer.o
    gcc $^ -o $@ ${LDFLAGS} ${LIBS}

clean:
    @rm -f $(objects)
    @rm -f SNPIndexer.o
    @rm -f HELPstub.c
    @rm -f HELPstub.o

clean-executable:
    @rm -f mrsfast

HELP.o:
    @groff -Tascii -man ./HELP.man > HELP
ifeq ($(shell uname -s),Linux)
    @ld -r -b binary -o HELP.o HELP
else
    @touch HELPstub.c
    gcc -o HELPstub.o -c HELPstub.c
    ld -r -o HELP.o -sectcreate binary HELP HELP HELPstub.o
endif

DEBUG_FLAGS:
    $(eval CFLAGS = $(CFLAGS) -ggdb)
    $(eval LIBS = $(LIBS) -ggdb)

OPTIMIZE_FLAGS:
    $(eval CFLAGS = $(CFLAGS) -O2)

PROFILE_FLAGS:
        $(eval CFLAGS = $(CFLAGS) -pg -g)
    $(eval LIBS = $(LIBS) -pg -g)

SSE_FLAGS:
ifeq ($(shell uname -s),Linux)
ifeq ($(with-sse4),no)
        $(shell echo "-DSSE4=0")
else
            $(eval CFLAGS = $(CFLAGS) \
            $(shell gv=`gcc -dumpversion`; \
                    sc=`grep -c "sse4" /proc/cpuinfo`; \
                    echo $$sc.$$gv | awk -F. '{if($$1>0 && $$2>=4 && $$3>=4) print "-DSSE4=1 -msse4.2"; else print "-DSSE4=0"}'))
endif
else
ifeq ($(with-sse4),no)
        $(shell echo "-DSSE4=0")
else
        $(eval CFLAGS = $(CFLAGS) \
        $(shell gv=`gcc -dumpversion`; \
                sc=`sysctl -n machdep.cpu.features | grep -c "SSE4"` ;\
                echo $$sc.$$gv | awk -F. '{if($$1>0 && $$2>=4 && $$3>=4) print "-DSSE4=1 -msse4.2"; else print "-DSSE4=0"}'))
endif
endif
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28533035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档