Я пытаюсь скомпилировать пример из dlib.net, используя g ++. Я считаю, что прямая компиляция примера в исполняемый файл прекрасно работает, используя:
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 ++ жалуется на неопределенные ссылки.
Что происходит за этим поведением? И как я могу связать исполняемый файл из объектных файлов?