2011-01-19 1 views
1

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

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

ответ

5

Общие библиотеки могут находиться в той же папке, что и ваш исполняемый файл. 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. 
+0

Хорошее решение. Недостатком является ужасный выбор слова '$ ORIGIN', который требует какого-то ускорения в каждой отдельной системе и системе сборки. – ephemient

+0

Не могу договориться больше. –

Смежные вопросы