zoukankan      html  css  js  c++  java
  • 【已解决】可执行程序无法在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/

  • 相关阅读:
    python基础之元组、文件操作、编码、函数、变量
    python---基础之模块,列表,元组,字典
    python成长之路-----day1-----作业(登录程序和三级菜单)
    k8s的port、targetport、nodeport之间的区别
    查找并删除文件
    systemctl自定义service
    中标麒麟7.0源
    springboot问题,没有主清单属性
    iso搭建本地源
    添加路由
  • 原文地址:https://www.cnblogs.com/create-serenditipy/p/15467515.html
Copyright © 2011-2022 走看看