我正在尝试使用g ++从dlib.net编译示例。我发现直接使用以下示例将示例编译为可执行文件即可:
g++ -std=c++11 -O3 -I/usr/lib /usr/lib/dlib/all/source.cpp -lpthread -lX11 optimization_ex.cpp -o optimiation_ex
但是当我首先将源代码编译为目标文件(1)并随后将其编译为目标文件(2)时,
g++ -std=c++11 -O3 -I/usr/lib -c /usr/lib/dlib/all/source.cpp -lpthread -lX11 -o /usr/lib/dlib/all/source.o
g++ -std=c++11 -O3 -I/usr/lib -c optimization_ex.cpp -lpthread -lX11 -o optimization_ex.o
g++ /usr/lib/dlib/all/source.o optimization_ex.o -o optimization_ex
然后无法编译可执行文件,并且g ++抱怨未定义的引用。
此行为背后发生了什么?以及如何从目标文件链接可执行文件?