Без более точной информации о том, какие команды компилятора / компоновщика были вызваны, и о точных ошибках выдает, трудно дать хороший ответ.
Однако из вашего описания того, что вы сделали, кажется, что вы не передаете distributions.o
компоновщику. В отличие от других языков, где компилятор / компоновщик ищет объектные файлы для автоматической ссылки, для компоновщиков C ++ требуется явная спецификация объектов для компоновки.
Вы используете здесь -ldistributions неправильно: флаг -l используется для ссылки на статическую или динамическую библиотеку (соответственно .a и .so файлы в Linux), тогда как вы хотите указать другое объектный файл , который должен учитывать компоновщик. Указание -ldistributions
заставляет компоновщик искать distributions.a
или distributions.so
в стандартных местоположениях библиотеки.
По сути, ваш вызов компоновщика теперь выглядит примерно так (возможно, с большим количеством флагов и библиотек):
gcc -o my_program SharedCache.o -ldistributions
Чтобы правильно связать код дистрибутива, вам нужно, чтобы он выглядел примерно так (опять же, многие флаги и библиотеки, вероятно, отсутствуют по сравнению с реальным):
gcc -o my_program SharedCache.o distributions.o
Это должно решить проблему отсутствующих символов и создать работающий двоичный файл (или, по крайней мере, другую ошибку ;-)). Как это сделать в KDevelop, однако я не знаю.