天天看點

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

【已解決】可執行程式無法在Linux上運作,顯示 line 1: syntax error: unexpected word (expecting

 接下來我們去掉-c,編譯成可執行檔案:

【已解決】可執行程式無法在Linux上運作,顯示 line 1: syntax error: unexpected word (expecting

 【注】mpi庫還用到了海思其他的庫,都需要連結進去,下一篇文章中專門解決這個問題

繼續閱讀