Я скомпилировал объектные файлы, а затем попытался скомпилировать исполняемый файл, который не удалось, указав, что есть неопределенные ссылки на функции в "theLib".
g++ -I./theLib/src -c -o obj/main.o src/main.cpp
(работает до сих пор)
g++ -L./theLib -Wl,-rpath=./theLib obj/main.o -ltheLib -o exe
(ошибка: libtheLib.so: undefined reference to 'some_function'
)
Я проверял ответы везде, и все они просто предлагают переместить часть -ltheLib
после зависимостей (что я и сделал). Но это все еще не работает. На самом деле я боюсь, что одна и та же библиотека компилируется просто для примера в другом каталоге.
Библиотека находится в C. Может ли это испортить попытку скомпилировать C++? Или я просто что-то пропустил с компиляцией файлов .o
?
Оказывается, библиотека зависела от функций, которые мне пришлось реализовать и предоставить в моем исходном коде. Я никогда не знал, что некоторые библиотеки это сделали, но урок узнал. Как только я реализовал функции, которые вызывают ошибки, и добавил эти исходные файлы, он сработал.
extern "C"
для функций изtheLib
которые вы используете в коде C ++?