Неопределенная ссылка при связывании 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
Прочитайте это, чтобы понять, почему заказ имеет значение.