我的项目使用g ++编译器编译分布在多个目录中的源代码,最后构建了一个可执行文件。但是在构建最终的可执行文件时,我得到了未定义的链接错误函数。
我做了以下代码,这是我的项目的缩小版,并暴露了相同的错误,希望你能帮助我。
所以这是目录树和源文件:
./
./11/
c1.cpp c1.h
./12/
c2.cpp
以下是文件:
./11/c1.h:
int f();
./11/c1.cpp:
#include "c1.h"
int f()
{
return 0;
}
./12/c2.cpp:
#include "c1.h"
int main()
{
f();
return 0;
}
以下是我构建文件的步骤:
cd 11
g++ -c -o ../c1.o c1.cpp
cp c1.h ..
cd ..
ar cr libc1.a c1.o
cd 12
g++ -I../ -L../ -lc1 c2.cpp
是的,我需要将c1编译为对象并将其归档,即使它很小,但这就是我的项目正在做的事情。
以下是错误消息:
/tmp/cctFdZLe.o: In function `main':
c2.cpp:(.text+0x5): undefined reference to `f()'
collect2: ld returned 1 exit status
谢谢!