我遇到了我的Makefile問題。在crt1.o函數中未定義對「main」錯誤的引用_start
我試圖從2個文件中創建一個程序 - main.cpp包含main函數,modules.c包含main()中調用的函數的定義。 modules.c只包含函數定義,不包含主函數。
我的Makefile文件如下:
CC := gcc
CXX := g++
LINK := g++ -Wall
CFLAGS := -g
CXXFLAGS := -g
TARGET = program
$(TARGET): modules.o main.o
$(LINK) -o [email protected] $< -lpcap
clean:
rm *.o $(TARGET)
modules.o:
$(CC) $(CFLAGS) -c modules.c -o [email protected] $<
main.o:
$(CXX) $(CXXFLAGS) -c main.cpp -o [email protected] $<
我已經包含了 「modules.h」,它包含了所有的函數聲明,在我的main.cpp。 CFLAGS和CXXFLAGS變量指向包含
正確的路徑當我嘗試使用這個Makefile做,我得到的錯誤
/usr/lib/gcc/x86_64-redhat-linux/4.4.4 /../../../../lib64/crt1.o:在函數 '_start':
(的.text + 0×20):未定義參照 '主'
如果我切換我的$(TARGET)行中的modules.o和main.o的順序,然後我得到錯誤,說「未定義的引用」,我已經在main.cpp modules.c中定義的函數。
我不知道什麼是錯的。
謝謝。
問候, 雷恩
發表代碼... – Nawaz 2011-04-13 08:36:19
我有一個類似的問題,當我拼寫'gcc -pipe'爲'gcc -pie' ... – gregn3 2015-02-13 12:25:44