Общие объекты и включение без установки в C ++ под Linux - PullRequest
1 голос
/ 20 января 2011

Я пишу программу, в которой есть две библиотеки, которые мне нужно использовать: v8 и v8-juice.К сожалению, v8-juice не может быть скомпилирован как статическая библиотека из-за некоторых вещей, которые он делает с шаблонами.Есть и другие причуды, которые требуют, чтобы v8 также компилировался как общий объект.

Итак, когда я компилирую свою программу, я получаю два общих объекта, которые необходимы для запуска исполняемого файла.У меня вопрос, есть ли способ, которым я могу включить эти общие объекты, не устанавливая их под Linux?Извините, если это вопрос новичка, я довольно плохо знаком с C ++.

1 Ответ

5 голосов
/ 20 января 2011

Общие библиотеки могут находиться в той же папке, что и ваш исполняемый файл. man ld.so:

   $ORIGIN and rpath

   ld.so  understands the string $ORIGIN (or equivalently ${ORIGIN}) in an
   rpath specification (DT_RPATH or DT_RUNPATH) to mean the directory con-
   taining  the  application  executable.  Thus, an application located in
   somedir/app could be compiled with gcc  -Wl,-rpath,'$ORIGIN/../lib'  so
   that  it  finds  an  associated shared library in somedir/lib no matter
   where somedir is located in the directory hierarchy.  This  facilitates
   the  creation  of  "turn-key"  applications  that  do  not  need  to be
   installed into special directories, but can instead  be  unpacked  into
   any directory and still find their own shared libraries.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...