Как избежать множественного -l при компиляции C++ при использовании библиотекC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как избежать множественного -l при компиляции C++ при использовании библиотек

Сообщение Anonymous »

Я столкнулся с множеством проблем при использовании внешних библиотек в C++.
Библиотека включает включаемый файл заголовочных файлов и файл lib, который включает все файлы .la, .so. Я добавил библиотеку в /usr/local/include и /usr/local/lib, а также отредактировал файл ld.so.conf. После того, как все это было сделано, я предполагал, что моя программа может быть успешно скомпилирована. Однако произошла ошибка:

Код: Выделить всё

$ g++ -o b try.cpp
/usr/bin/ld: /tmp/ccTWcUvt.o: in function `main':
try.cpp:(.text+0x36): undefined reference to `OsiClpSolverInterface::OsiClpSolverInterface()'
/usr/bin/ld: try.cpp:(.text+0x45): undefined reference to `OsiClpSolverInterface::~OsiClpSolverInterface()'
затем я вручную ввел все имена файлов библиотеки после -l и снова скомпилировал с помощью этой команды:

Код: Выделить всё

g++ -o b try.cpp -lCbc -lCbcSolver -lCgl -lClp -lcoinasl -lcoinglpk -lcoinmumps -lCoinUtils -lOsi -lOsiCbc -lOsiClp -lOsiCommonTest -lOsiGlpk
На этот раз компиляция прошла успешно, и программа работала отлично.
Мне интересно, есть ли какой-нибудь способ избежать этого многословия? Кроме того, если бы кто-нибудь мог объяснить мне, почему недостаточно просто добавить путь к файлам библиотеки, а нужно явно указать имена, я бы тоже был очень признателен.

Подробнее здесь: https://stackoverflow.com/questions/701 ... -libraries
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»