HI 大牛们,为啥编译能通过,链接通不过呢
make[1]: 正在进入目录 `/home/administrator/myproj/system'
make[2]: 正在进入目录 `/home/administrator/myproj/system/device'
g++ -O0 -I../../include -I../../ui -c device.cpp device.h
make[2]:正在离开目录 `/home/administrator/myproj/system/device'
make[2]: 正在进入目录 `/home/administrator/myproj/system/input'
g++ -O0 -I../../include -I../../ui -c input.cpp input.h
make[2]:正在离开目录 `/home/administrator/myproj/system/input'
make[2]: 正在进入目录 `/home/administrator/myproj/system/msg'
g++ -O0 -I../../include -c msg.cpp msg.h
make[2]:正在离开目录 `/home/administrator/myproj/system/msg'
ar -cr system.a device/*.o input/*.o msg/*.o
make[1]:正在离开目录 `/home/administrator/myproj/system'
make[1]: 正在进入目录 `/home/administrator/myproj/ui'
g++ -c view.cpp -I../include
ar -cr ui.a ./*.o
make[1]:正在离开目录 `/home/administrator/myproj/ui'
make[1]: 正在进入目录 `/home/administrator/myproj/project'
g++ -O0 -I../include -I../ui -I../system -c nav_view.cpp nav_view.h
ar -cr project.a ./*.o
make[1]:正在离开目录 `/home/administrator/myproj/project'
#link LIBS
g++ main.cpp -Iinclude -Iui ui/ui.a project/project.a system/system.a -lpthread -o main
system/system.a(device.o):在函数‘__static_initialization_and_destruction_0(int, int)’中:
device.cpp:(.text+0x85a):对‘nav_view::nav_view()’未定义的引用
device.cpp:(.text+0x871):对‘nav_view::~nav_view()’未定义的引用
collect2: 错误: ld 返回 1
make: *** [all] 错误 1
device类中有一个nav_view的对象,此对象是device的静态成员,编译都能通过,链接却提示说nav_view的构造函数未定义,事实上是有定义的。为啥?
[解决办法]
//g++ main.cpp -Iinclude -Iui ui/ui.a project/project.a system/system.a -lpthread -o main
g++ main.cpp -Iinclude -Iui ui/ui.a project/project.a system/system.a nav_view.o -lpthread -o main