【已解決】可執行程式無法在Linux上執行,顯示 line 1: syntax error: unexpected word (expecting ")")
阿新 • • 發佈:2021-10-26
這個上網搜尋多數是英文的,然後我找到了一篇中文的,他講的正是關鍵點:編譯命令(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/