【已解决】可执行程序无法在Linux上运行,显示 line 1: syntax error: unexpected word (expecting ")")

 

这个上网搜索多数是英文的,然后我找到了一篇中文的,他讲的正是关键点:编译命令(gcc/g++)加了-c参数,比如我的

CC       = arm-himix200-linux-gcc
CCFLAGS   = -Wall -O -g

INCLUDE  = -I ./include 
# 可执行文件的名字
TARGET   = encJpeg
# 链接 libmpi.a
LIBNAME   = -lmpi  
LIBPATH  = -L ./lib

#正则表达式表示目录下所有.c文件,
C_SRCS= $(wildcard ./src/*.c)

# 第一行依赖关系:冒号后面为依赖的文件,相当于Hello: main.o a.o b.o
# 第二行规则:$@表示目标文件,$^表示所有依赖文件,$<表示第一个依赖文件
$(TARGET): $(C_SRCS)		
	$(CC)   $(CCFLAGS) $(INCLUDE) $(LIBNAME) $(LIBPATH)  -c  $^ -o ./build/$@ 


# make clean删除所有.o和目标文件
clean:
	rm -f ./build/* 
	



 

  实际上,gcc的-c选项的意思是:

-c
  只激活预处理,编译,和汇编,也就是他只把程序做成obj文件
  例子用法:
  gcc -c hello.c
  他将生成.o的obj文件

也就是,如果不加-c,默认就直接编译生成可执行文件了,加上-c就只编译成目标obj文件,就不往下继续编译成可执行文件了。。。。。这些错误往往都是不太懂编译链接的程序员搞出来的“奇奇怪怪错误”,没办法呀,只能一个坑一个坑的踩过去,但是一定要吸取教训并且总结回顾,系统的补齐自己的基础知识!

用-c编译出来的文件:

 

 

 接下来我们去掉-c,编译成可执行文件:

 

 

 

 

 【注】mpi库还用到了海思其他的库,都需要链接进去,下一篇文章中专门解决这个问题

 

原文链接:https://www.crifan.com/resolved_executable_program_can_not_run_on_linux_display_line_1_syntax_error_word_unexpected_expecting_quot/

 

posted @ 2021-10-26 19:41  时间的风景  阅读(1650)  评论(0编辑  收藏  举报