1. 程式人生 > 其它 >【已解決】可執行程式無法在Linux上執行,顯示 line 1: syntax error: unexpected word (expecting ")")

【已解決】可執行程式無法在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,編譯成可執行檔案:

原文連結:https://www.crifan.com/resolved_executable_program_can_not_run_on_linux_display_line_1_syntax_error_word_unexpected_expecting_quot/