Я следую учебному пособию C ++ Cookbook по статическим и динамическим библиотекам, связывающим с g ++. Я могу построить двоичный файл нормально, но когда я запускаю его, я получаю сообщение об ошибке
. / Hellobeatles: ошибка при загрузке общих библиотек: libjohnpaul.so: невозможно открыть файл общих объектов: такого файла или каталога нет
Я использовал команду
: g ++ -o hellobeatles hellobeatles.cpp -L ../johnpaul/ -L ../georgeringo/ -ljohnpaul -lgeorgeringo
Программа собирается и работает нормально, если я явно перечислю путь следующим образом
: g ++ -o hellobeatles hellobeatles.cpp ../johnpaul/libjohnpaul.so ../georgeringo/libgeorgeringo.so
Не правильно ли я ссылаюсь на библиотеки в первой команде? Или есть какой-то параметр конфигурации, с которым мне нужно избавиться?
Я запускаю гостевую виртуальную машину Ubuntu 9.10 в VirtualBox, если это имеет значение, и вот -v
Используя встроенные спецификации.
Цель: x86_64-linux-gnu
Настраивается с помощью: ../src/configure -v --with-pkgversion = 'Ubuntu 4.4.1-4ubuntu9' --with-bugurl = file: ///usr/share/doc/gcc-4.4/README.Bugs - -enable-languages = c, c ++, fortran, objc, obj-c ++ --prefix = / usr --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib - libexecdir = / usr / lib - без включенного-gettext --enable-threads = posix --with-gxx-include-dir = / usr / include / c ++ / 4.4 --program-суффикс = -4.4 --enable- nls --enable-clocale = gnu --enable-libstdcxx-debug --enable-objc-gc --disable-werror --with-arch-32 = i486 --with-tune = универсальный --enable-check = release --build = x86_64-linux-gnu --host = x86_64-linux-gnu --target = x86_64-linux-gnu
Модель потока: posix
gcc версия 4.4.1 (Ubuntu 4.4.1-4ubuntu9)