Неопределенная ссылка при связывании V8

Я изо всех сил пытаюсь собрать действительно маленький пример с V8..

Программа CPP это:

#include "v8.h"

int main()
{
     v8::HandleScope handle_scope;

     return 0;
}

Строка компиляции: g++ -I/home/lterje/git/tengine/Externals/v8/include /home/lterje/git/tengine/Externals/v8/out/ia32.release/obj.target/tools/gyp/libv8_snapshot.a test.cpp -o test -lpthread

Ошибка, которую я получаю:

/tmp/ccHYtJuE.o: In function `main':
test.cpp:(.text+0x11): undefined reference to `v8::HandleScope::HandleScope()'
test.cpp:(.text+0x22): undefined reference to `v8::HandleScope::~HandleScope()'
collect2: error: ld returned 1 exit status

В чем разница между файлами базы, снимка и библиотеки без снимков? Я пробовал связываться с каждым из них, но ни один из них не работает: /

2 ответа

Сначала я должен извиниться за мой плохой английский. Я только что связал файл.a с моим собственным проектом. Ошибка ld из-за того, что зависимости от libv8_snapshot.a не заданы.

Это мое компиляция:

g ++ -o xxxxx -I ~ v8 / out / native / obj.target / tools / gyp / libv8_ {base.native, снимок}.a ~v8/out/native/obj.target/third_party/icu/libicu{data,i18n, снимок}.a ~v8/out/native/obj.target/icudata/third_party/icu/linux/icudt46_dat.o -lrt -lpthread

Я думаю, что libv8_base.native.a libv8_snapshot.a зависит от файлов icu и icudt46 и что некоторые функции, касающиеся unix clock_time, зависят от "rt", поэтому добавьте "-lrt"

Надеюсь, полезно для вас всех ~ Как китайский, извините за мой английский.

Линия компиляции:
g ++ -I / home / lterje / git / tengine / Externals / v8 / include /home/lterje/git/tengine/Externals/v8/out/ia32.release/obj.target/tools/gyp/libv8_snapshot.a test.cpp -o тест -lpthread

Эта ссылка неверна. Попробуйте это вместо этого:

g++ -I/home/lterje/git/tengine/Externals/v8/include \
  test.cpp -o test \
  /home/.../obj.target/tools/gyp/libv8_snapshot.a \
  -lpthread

Прочитайте это, чтобы понять, почему заказ имеет значение.

Другие вопросы по тегам