搜索

1

主题

1

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2019-11-8 15:48:18 34890 浏览 1 回复

迅为4412开发板编译工程编译和交叉编译问题



本工程已经在环境:
(1)ubuntu12.04
(2)编译器:gcc version 5.4.1 20160904 (Ubuntu 5.4.1-2ubuntu1~12.04)
(3)交叉编译器:gcc version 4.4.1 (Sourcery G++ Lite 2009q3-67)
(4)系统为x86_64

makefile文件内容:
/**********************************makefile start**********************************/
CROSS_COMPILE = arm-none-linux-gnueabi-
#CROSS_COMPILE =

TAR = ctl.bin
OBJS =  main.o  sys.o  usage.o dm.o\
        ver.o var.o  const_data.o gpio.o\
        public_config.o\
        xml.o private_config.o str.o file_info.o pipe.o pipe_cmd.o\
        process_mutex.o zlog_interface.o\
        event_core.o dm_epoll.o timer.o\
        socket.o sp_frame_analyse.o commun.o\
        cmd_core.o\
        dm_flow.o\
        monitor.o\
        dev_state.o\
        online.o\
        serial_port.o\
        info_census.o tick.o ab_process.o\
        abnormal.o  abnormal_act.o  abnormal_simulate.o ab_interface.o\
        conf_coprocess_module.o
CC = $(CROSS_COMPILE)gcc
CFLAGS = -g  -O2  -Wstrict-prototypes -Wno-unused-function -I/usr/include/libxml2 -I/usr/include/ -std=gnu11

LDFLAGS = -pthread -lxml2  -lrt -lzlog

$(TAR):        $(OBJS)
        $(CC) $(CFLAGS) -o $(TAR) $(OBJS) $(LDFLAGS)
        rm  -rf *.o
clean:
        rm -rf *.o $(TAR)

ifneq ("$V", "1")
  Q=@
endif
%.o : %.c
        @echo "\033[1;35m $(CC) $@\033[0m"
        $(Q) $(CC) -pipe $(CFLAGS) -c -o $@ $<
/**********************************makefile end**********************************/
     在使用“CROSS_COMPILE =”编译时可以编译通过,但是使用“CROSS_COMPILE = arm-none-linux-gnueabi-”编译时出现以下三个问题:
      (1)cc1: error: unrecognized command line option "-std=gnu11";
      (2)cc1: warning: include location "/usr/include/libxml2" is unsafe for cross-compilation; cc1: warning: include location "/usr/include" is unsafe for cross-compilation。
     已经尝试将-std=gnu11改为-std=gnu99是可以编译的,但是报错
“socket.c:262: error: impossible constraint in 'asm'
socket.c:233: error: invalid 'asm': invalid operand for code 'w'
{standard input}: Assembler messages:
{standard input}:261: Error: bad instruction `rorw $8,'
make: *** [socket.o] Error 1”。

本工程已经在环境:(1)ubuntu16.04 LTS (2)编译器:gcc version 5.4.1 20160904 (Ubuntu 5.4.1-2ubuntu1~12.04)(3)交叉编译器:gcc version 6.3.0 (crosstool-NG crosstiil-ng-1.23.0)
(4)系统为i686
在gcc和交叉编译都可以编译通过的。

makefile文件内容:
/**********************************makefile start**********************************/
CROSS_COMPILE = arm-linux-
#CROSS_COMPILE =

TAR = ctl.bin
OBJS =  main.o  sys.o  usage.o dm.o\
        ver.o var.o  const_data.o gpio.o\
        public_config.o\
        xml.o private_config.o str.o file_info.o pipe.o pipe_cmd.o\
        process_mutex.o zlog_interface.o\
        event_core.o dm_epoll.o timer.o\
        socket.o sp_frame_analyse.o commun.o\
        cmd_core.o\
        dm_flow.o\
        monitor.o\
        dev_state.o\
        online.o\
        serial_port.o\
        info_census.o tick.o ab_process.o\
        abnormal.o  abnormal_act.o  abnormal_simulate.o ab_interface.o\
        conf_coprocess_module.o
CC = $(CROSS_COMPILE)gcc
CFLAGS = -g  -O2  -Wstrict-prototypes -Wno-unused-function -I/usr/include/libxml2
#CFLAGS += -fPIC -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Wl,-z,relro,-z,now -Wl,--as-needed -Wl,--no-copy-dt-needed-entries -Wl,-z,noexecstatck -Wl,-z,noexecheap -w
#CFLAGS += -finput-charset=GB2312 -fexec-charset=UTF-8

LDFLAGS = -pthread -lxml2  -lrt -lzlog

$(TAR):        $(OBJS)
        $(CC) $(CFLAGS) -o $(TAR) $(OBJS) $(LDFLAGS)
        rm  -rf *.o
clean:
        rm -rf *.o $(TAR)

ifneq ("$V", "1")
  Q=@
endif
%.o : %.c
        @echo "\033[1;35m $(CC) $@\033[0m"
        $(Q) $(CC) -pipe $(CFLAGS) -c -o $@ $<
/**********************************makefile end**********************************/


回复

使用道具 举报

151

主题

506

帖子

3583

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3583
发表于 2019-11-11 21:18:06
看来还是编译器指定的不对,按照手册的编译步骤试试呢
回复 点赞

使用道具 举报

返回列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

登录或注册

官方客服

QQ:2551456065

官方QQ群

195631883

扫一扫关注迅为公众号

群号652692981

 
快速回复 返回顶部 返回列表