【已解决】可执行程序无法在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/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· 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工具