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

 

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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 @   时间的风景  阅读(1955)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示