交叉编译移植时makefile怎么写?

廖佳才 2016-09-10 11:52:48
现在准备移植一个程序到S32V234的板子上
之前有一个FSCW的程序,实在linux3,7内核的版本上运行的,已经有所有的工程文件,.a和.o文件都有
我需要把它改成在当前的l开发板linux4.2版本上编译生成可执行文件,怎么做?
下面是之前的makefile:
CROSS_COMPILE = arm-linux-gnueabi-
CC=$(CROSS_COMPILE)g++
LINK=$(CROSS_COMPILE)g++
TARGET = a10_mdas

OBJ = main.o \
capture.o \
draw_420p.o \
fontinfo.o \
ksc5601.o \
gxbdf.o \
g2d.o \
AdasProcess.o


INC = -I/. -W -Wall -I/home/sylee/project/a20/lichee/linux-3.4/include
CFLAGS = -O3 -c -march=armv7-a -mtune=cortex-a8 -mfpu=neon -ftree-vectorize -ffast-math -mfloat-abi=softfp
LIBS = ./libmdas.a -lpthread

all: $(TARGET)

$(TARGET): $(OBJ)
$(LINK) -o $(TARGET) $(OBJ) ${LIBS} log.o

%.o: %.c
$(CC) $(INC) $(CFLAGS) -Wall -c $^ -o $@

clean:
rm -f $(TARGET) $(OBJ)

我现在要移植的板子的makefile是这样的(这个是一个在当前的开发板上可以运行的APP的makefile):

# nbuild packages
ODIR := $(shell basename `pwd`)

SYS := $(shell echo $$OSTYPE)
ifeq ($(SYS),)
NBUILD_PLATFORM := linux
else
ifneq ($(findstring solaris,$(SYS)),)
NBUILD_PLATFORM := solaris
else
ifneq ($(findstring linux,$(SYS)),)
NBUILD_PLATFORM := linux
else
ifneq ($(findstring INTEGRITY,$(SYS)),)
NBUILD_PLATFORM := integrity
else
NBUILD_PLATFORM := msys
endif
endif
endif
endif

include ../BUILD.mk

ifeq ($(APEX_PREBUILD),1)
APU_GRAPHS := ""
APU_GRAPH_LIBS := ""
APU_GRAPH_INCS := ""
ifneq ($(ACL_KERNELS),)
ACL_KERNELS :=
endif
ifneq ($(ACL_KERNEL_SRC_DIRS),)
ACL_KERNEL_SRC_DIRS :=
endif
ifneq ($(ACL_KERNEL_LIBS),)
ACL_KERNEL_LIBS :=
endif
endif

VPATH += ../src
VPATH += ../graphs

include $(SDK_ROOT)/build/nbuild/core.mk

OPENCV_ROOT = $(SDK_ROOT)/3rdparty/ocv/linux-arm64
FFMPEG_ROOT = $(SDK_ROOT)/3rdparty/ffmpeg/linux-arm64

ifeq ($(X86_KERNEL_DB),"on")
X86_APP = $(basename $(APU_LIB))
X86_APP_SRCS = $(APU_LIB_SRCS)

ifneq ($(findstring msys,$(NBUILD_PLATFORM)),)
X86_APP_LIBS = $(SDK_ROOT)/libs/apex/acf_offline/build-x86-gnu-windows-d/libacf_offline.a
else
X86_APP_LIBS = $(SDK_ROOT)/libs/apex/acf_offline/build-x86-gnu-linux-d/libacf_offline.a
endif

X86_DEFS += -DACF_KERNEL_METADATA
X86_CCOPTS += --include apu2_kernel_db_lib.h
X86_INCS += -I$(SDK_ROOT)/libs/apex/acf_offline/include \
-I$(SDK_ROOT)/libs/apex/acf_target/include \
-I$(SDK_ROOT)/libs/apex/common/include \
-I$(SDK_ROOT)/libs/apex/common/include/driver \

X86_KERNEL_DB = "on"
endif

ifneq ($(strip $(X86_APP) $(X86_LIB)),)
include $(SDK_ROOT)/build/nbuild/toolchains/x86-linux-gnu.mk
endif

ifneq ($(APU_GRAPHS),)
include $(SDK_ROOT)/build/nbuild/apex_tools/apu-kernel-getgraphs.mk
endif

ifneq ($(ACL_KERNELS),)
include $(SDK_ROOT)/build/nbuild/apex_tools/acl-kernel.mk
endif

ifeq ($(APU_LOAD_FROM_EXE),"on")
include $(SDK_ROOT)/build/nbuild/apex_tools/apu-kernel-load.mk
endif

ifeq ($(X86_KERNEL_DB),"on")
include $(SDK_ROOT)/build/nbuild/apex_tools/apu-kernel-database.mk
endif

ifneq ($(strip $(APU_APP) $(APU_LIB) $(APU_LOAD_BINS)),)
include $(SDK_ROOT)/build/nbuild/toolchains/apu-acf-sa-tct.mk
endif

ifneq ($(strip $(ACL_APP) $(ACL_LIB) $(ACL_LOAD_BINS)),)
include $(SDK_ROOT)/build/nbuild/toolchains/apu-acl-sa-tct.mk
endif

include $(SDK_ROOT)/build/nbuild/apex_tools/acl-get_md.mk

ifneq ($(strip $(ARM_APP) $(ARM_LIB)),)
include $(SDK_ROOT)/build/nbuild/toolchains/aarch64-linux-gnu.mk
endif

################## ISP firmware and graph, IPU ###############################
ifneq ($(strip $(SEQ_APP) $(SEQ_LIB)),)

ifeq ($(TOOLCH),ghs) ### GHS ###########################
include $(SDK_ROOT)/build/nbuild/toolchains/arm-sa-ghs-m0.mk
else ### GCC ###########################################
include $(SDK_ROOT)/build/nbuild/toolchains/arm-sa-gnu-m0.mk
endif
endif


ifneq ($(IPUS_APP),)
include $(SDK_ROOT)/build/nbuild/toolchains/ipus-sa-gnu.mk
endif

ifneq ($(IPUV_APP),)
include $(SDK_ROOT)/build/nbuild/toolchains/ipuv-sa-gnu.mk
endif

ifneq ($(strip $(IPUS_APP) $(IPUV_LIB)),)
include $(SDK_ROOT)/build/nbuild/isp_tools/isp-graphgen.mk
endif
##############################################################################

include $(SDK_ROOT)/build/nbuild/sub.mk
#include $(SDK_ROOT)/build/nbuild/tags.mk
include $(SDK_ROOT)/build/nbuild/headdep.mk



请问大神,之前的程序移植到当前的开发板上要怎么该makefile?工程文件中涉及系统的东西还要改哪些东西?难不能把现在的makefile的各个语句解释一下?
注:之前的程序不需要现在的SDK_ROOT文件夹下的库支持



...全文
658 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
廖佳才 2016-09-26
  • 打赏
  • 举报
回复
问题已经解决,在demo的makefile中添加相应等的文件就可以了,cpp文件相应的SRC,h文件的目录要被包含进去,这样就饿可以了,静态库的路径要是绝对路径!!!,这样就可以变异通过了。
廖佳才 2016-09-14
  • 打赏
  • 举报
回复
好的,谢谢,以前只搞算法,没做过移植,现在试一把
  • 打赏
  • 举报
回复
应该是可以生成的,然后把对应的.o和一些客制化的替换掉。
哮浪 2016-09-11
  • 打赏
  • 举报
回复
一般都是用configure来自动生成makefile

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧