Связывание объектных файлов с исполняемым файлом не работает
Я пытаюсь скомпилировать пример из dlib.net, используя g++. Я считаю, что прямая компиляция примера в execuable прекрасно работает, используя:
g++ -std=c++11 -O3 -I/usr/lib /usr/lib/dlib/all/source.cpp -lpthread -lX11 optimization_ex.cpp -o optimiation_ex
Но когда я сначала скомпилирую исходный код в объектные файлы (1), а затем добавлю ссылку (2),
(1)
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
(2)
g++ /usr/lib/dlib/all/source.o optimization_ex.o -o optimization_ex
исполняемый файл не может быть скомпилирован, и g ++ жалуется на неопределенные ссылки.
Что происходит за этим поведением? И как я могу скомпилировать исполняемый файл из объектных файлов?