【已解決】可執行程序無法在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/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM