crt1.o函数_start中对'main'错误的未定义引用

Ray*_*yne 4 c c++ makefile

我的Makefile有问题.

我正在尝试从2个文件创建程序 - main.cpp包含main函数,modules.c包含main()中调用的函数的定义.modules.c只包含函数定义,没有main函数.

我的Makefile如下:

CC := gcc
CXX := g++
LINK := g++ -Wall
CFLAGS := -g
CXXFLAGS := -g

TARGET = program

$(TARGET): modules.o main.o
   $(LINK) -o $@ $< -lpcap

clean:
   rm *.o $(TARGET)

modules.o:
   $(CC) $(CFLAGS) -c modules.c -o $@ $<

main.o:
   $(CXX) $(CXXFLAGS) -c main.cpp -o $@ $<
Run Code Online (Sandbox Code Playgroud)

我在main.cpp中包含了"modules.h",其中包含所有函数声明.CFLAGS和CXXFLAGS变量指向包含的正确路径

当我尝试使用这个Makefile时,我收到错误

/usr/lib/gcc/x86_64-redhat-linux/4.4.4/../../../../lib64/crt1.o:在函数'_start'中:(.
text + 0x20):未定义的引用'主'

如果我在$(TARGET)行中切换modules.o和main.o的顺序,那么我得到的错误是"未定义引用"我在modules.c中定义的函数,在main.cpp中.

我不知道出了什么问题.

谢谢.

此致,Rayne

Pat*_*rgi 8

使用$ ^而不是$ <.后者仅包含第一个依赖项(modules.o),因此main.o未链接到可执行文件中.

  • 尝试用g ++编译C代码(仅用于测试).C++有一些有趣的名称修改规则可能会在这里发生冲突.如果修复它,请查看'extern"C"' (4认同)