将静态库链接到测试脚本时出错
Error while linking static library to test script
我正在为一个小项目构建一个静态库,当我用 ar
编译它时,它正确 links.
当我去包含相关的头文件和link测试脚本到存档时;
LINK = -lpthread -lcryptopp -L./path/to/archive/ -luttu
r: ../inc/uttu.hpp
g++ -std=c++20 rnet.cpp -o r.out $(LINK)
我收到 linker 错误;
/usr/bin/ld: /tmp/cc7h6RHu.o: in function `main':
rnet.cpp:(.text+0x263): undefined reference to `np::np()'
/usr/bin/ld: rnet.cpp:(.text+0x317): undefined reference to `np::np()'
/usr/bin/ld: ./../exe//libuttu.a(peer.o): in function `Peer::Connect(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
/home/uton/code/Concord/uttu/src/peer.cpp:43: undefined reference to `void np::target<np::_tf>(np::_tf)'
/usr/bin/ld: ./../exe//libuttu.a(relay.o): in function `Relay::Foward()':
/home/uton/code/Concord/uttu/src/relay.cpp:40: undefined reference to `np::np()'
collect2: error: ld returned 1 exit status
make: *** [Makefile:8: r] Error 1
运行 ar t libuttu.a
returns
linux.o
uttu.o
timeout.o
peer.o
relay.o
sec.o
np.o
我的测试脚本包含主头文件 uttu.hpp
,它本身引用 np
头文件,名称为 protocols.hpp
存档文件的路径正确,存档本身包含正确的目标文件,测试脚本引用包含正确定义的主头文件。
我不知道可能出了什么问题。
看完this SO问题后,我意识到我错过了一个被覆盖的虚拟成员。
我正在为一个小项目构建一个静态库,当我用 ar
编译它时,它正确 links.
当我去包含相关的头文件和link测试脚本到存档时;
LINK = -lpthread -lcryptopp -L./path/to/archive/ -luttu
r: ../inc/uttu.hpp
g++ -std=c++20 rnet.cpp -o r.out $(LINK)
我收到 linker 错误;
/usr/bin/ld: /tmp/cc7h6RHu.o: in function `main':
rnet.cpp:(.text+0x263): undefined reference to `np::np()'
/usr/bin/ld: rnet.cpp:(.text+0x317): undefined reference to `np::np()'
/usr/bin/ld: ./../exe//libuttu.a(peer.o): in function `Peer::Connect(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
/home/uton/code/Concord/uttu/src/peer.cpp:43: undefined reference to `void np::target<np::_tf>(np::_tf)'
/usr/bin/ld: ./../exe//libuttu.a(relay.o): in function `Relay::Foward()':
/home/uton/code/Concord/uttu/src/relay.cpp:40: undefined reference to `np::np()'
collect2: error: ld returned 1 exit status
make: *** [Makefile:8: r] Error 1
运行 ar t libuttu.a
returns
linux.o
uttu.o
timeout.o
peer.o
relay.o
sec.o
np.o
我的测试脚本包含主头文件 uttu.hpp
,它本身引用 np
头文件,名称为 protocols.hpp
存档文件的路径正确,存档本身包含正确的目标文件,测试脚本引用包含正确定义的主头文件。
我不知道可能出了什么问题。
看完this SO问题后,我意识到我错过了一个被覆盖的虚拟成员。